JDBC中的SQL更新语句的问题

时间:2014-10-31 19:40:58

标签: java sql jdbc

代码抛出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();
    }
}

2 个答案:

答案 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()));

现在运行您的代码并检查它是否成功运行。