2014-10-31 71 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他們,讓他們去到正確的位置。目前,您正在將字符串分配給數字字段和數字字符串字段,我們可以看到。