2017-03-18 113 views
0

我试图从动态获取的多个列名称(lo1,lo2,...)中更新表格。但是这些值在数据库中没有得到更新。 列名CO1,CO2 ....更新查询的动态列名称

私人无效jButton1ActionPerformed(EVT java.awt.event.ActionEvent中){

  Connection conn = null; 
     PreparedStatement pstmt = null; 

     try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     conn = DriverManager.getConnection("jdbc:mysql://localhost/netbeans","root",""); 



     Statement st = conn.createStatement(); 

     ResultSet rs = st.executeQuery("SELECT * FROM colo"); 

    rs = st.executeQuery("SELECT COUNT(*) FROM colo"); 
    // get the number of rows from the result set 
    rs.next(); 
    int rowCount = rs.getInt(1); 

    //txt_ans.setText(String.valueOf(rowCount)); 
    int num_1 =300; 
    int num_2 =200; 
    int num_3 =300; 
    int num_4 =400; 
    String value = null; 
    int value1 ; 

    for(int i=1;i<=rowCount;i++) 
    { 

     String sql =("SELECT * FROM colo WHERE id = '"+i+"'"); 

     pstmt = conn.prepareStatement(sql); 
     rs = pstmt.executeQuery(sql); 
     while(rs.next()) 
      value = rs.getString("co1"); 
     //txt_ans.setText(String.valueOf(value)); 
     String x = "co2"; 
     if(value.equals("lo1")) 
     { 
      // value1= 1; 
      // txt_ans.setText(String.valueOf(value1)); 


      String sql1 =("update colo set '"+x+"' = '"+num_1+"' where id = '"+i+"'"); 
     pstmt = conn.prepareStatement(sql1); 
     int r = pstmt.executeUpdate(sql1); 


     txt_ans.setText(String.valueOf(r));  

     } 
     else if(value.equals("lo2")) 
     { 
      // value1= 1; 
      // txt_ans.setText(String.valueOf(value1)); 
     String sql1 =("update colo set '"+ x +"' = '"+num_2+"' where id = '"+i+"'"); 
     pstmt = conn.prepareStatement(sql1); 
     int r = pstmt.executeUpdate(sql1); 


     txt_ans.setText(String.valueOf(r));  

     } 
     else 
     { 
      value1 = 9009; 
      txt_ans.setText(String.valueOf(value1)); 
     } 


    } 

回答

0

的问题是使用单引号列名即像的“x”,所以如下所示只是删除:

String sql1 =("update colo set " + x + " = ? where id = ?");//no single quote for x 
pstmt = conn.prepareStatement(sql1); 
pstmt.setString(1, num_1); 
pstmt.setString(2, i); 
int r = pstmt.executeUpdate(sql1); 

此外,始终使用prepareStatementsetString等。,用于设置所建议的值的方法。

else if(value.equals("lo2"))块中的其他查询也应用相同的概念。

+0

仍然没有变化@javaguy –

+0

这是给零点例外。 –

+0

你能发布异常堆栈跟踪吗? – developer