2014-10-31 55 views
-1

代码抛出java.sql.SQLDataException SQL更新语句:类型INTEGER无效的字符串格式每次我运行时我似乎,不知道是什么问题问题随着JDBC

private void update(){ 
    connection(); 
    try{ 
     String sqldb = 
       "update votersInfo set votersName = ? , age = ?,state = ? where votersId =?" 
       ;    
     prep = conn.prepareStatement(sqldb); 

     //int intA = Integer.parseInt(jTextField1.getText());    
     prep.setInt(1, Integer.parseInt(jTextField1.getText()));    
     prep.setString(2, jTextField2.getText()); 
     prep.setInt(3, Integer.parseInt(jTextField3.getText())); 
     prep.setString(4, jTextField4.getText()); 
     int a = prep.executeUpdate(); 
     if (a>0){ 
      JOptionPane.showMessageDialog(rootPane, "Sucessful"); 
     }          
    } 
    catch(Exception e){ 
     // System.err.println(e.printStackTrace()); 
     e.printStackTrace(); 
    } 
} 
+0

什么是堆栈跟踪打印? – imtheman 2014-10-31 19:44:15

+0

你检查过'jTextField1.getText()'和'jTextField3.getText()'的实际值是什么吗? – Lolo 2014-10-31 19:44:50

+0

什么是选民名称,年龄,州和选民ID的数据库列类型?再次检查。 – Braj 2014-10-31 19:54:29

回答

0

我假设votId是一个整数,但你直接发送一个字符串,而不是整数。

所以修改最后的PreparedStatement作为

prep.setInt(4, Integer.parseInt(jTextField4.getText())); 

现在运行你的代码,并检查它在运行successfuly。

0

你有主要论点不符。我在这里填写了数值。

String sqldb = 
      "update votersInfo set votersName = ? [1], age = ? [2] ,state = ? [3] where votersId =? [4]"; 

而且他们是如何映射到集:

prep.setInt(1, Integer.parseInt(jTextField1.getText())); //setting name to an Integer 
    prep.setString(2, jTextField2.getText()); //setting age to a String 
    prep.setInt(3, Integer.parseInt(jTextField3.getText())); //setting state to an Integer 
    prep.setString(4, jTextField4.getText()); //setting votersId to a String 

我不知道你输入的是什么,因为你还没有告诉我们,他们是什么,但你应该retailor他们,让他们去到正确的位置。目前,您正在将字符串分配给数字字段和数字字符串字段,我们可以看到。