代码抛出java.sql.SQLDataException:每次运行时类型为INTEGER的字符串格式都无效,我似乎不知道问题是什么
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 :(得分: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
我不知道您的输入是什么,因为您没有告诉我们它们是什么,但您应该将它们零售,以便它们找到正确的位置。目前,您正在从我们可以看到的内容中将字符串分配给数字字段,将数字分配给字符串字段。
答案 1 :(得分:0)
我假设electionsId是一个整数,但你直接发送一个String而不是整数。
所以将上次准备好的语句修改为
prep.setInt(4, Integer.parseInt(jTextField4.getText()));
现在运行您的代码并检查它是否成功运行。