为什么此代码的更新按钮不起作用?

时间:2019-04-20 13:13:47

标签: java mysql

这是更新已输入数据库中记录的代码。程序正在运行,没有错误。但是在更新现有记录后,它在db中还没有更新。

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try{
       Class.forName("com.mysql.jdbc.Driver");
        try (Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/project", "root", "")) {
            String sql="update student set stName=?,gender=?,grade=?,subject=? where stNo=?";
            PreparedStatement pst=con.prepareStatement(sql);

            pst.setInt(1,Integer.parseInt(stNo.getText()));
            pst.setString(2, stName.getText());
            pst.setString(3, gender.getText());
            pst.setString(4, grade.getText());
            pst.setString(5, gender.getText());

            pst.executeUpdate();

            JOptionPane.showMessageDialog(null, "Record updated Successfully");
        }
    }
    catch(HeadlessException | ClassNotFoundException | NumberFormatException | SQLException e){
        JOptionPane.showMessageDialog(null, e);
    }

问题是这段代码已经过测试,我更新了一些现有记录。但是现在不起作用了。

3 个答案:

答案 0 :(得分:3)

stNo的参数在您的语句中是第5个而不是第1个:

    pst.setString(1, stName.getText());
    pst.setString(2, gender.getText());
    pst.setString(3, grade.getText());
    pst.setString(4, gender.getText());
    pst.setInt(5,Integer.parseInt(stNo.getText()));

答案 1 :(得分:1)

它的逻辑错误.... stNo是您的第五个参数..这就是为什么不更新数据的原因。

pst.setString(1, stName.getText());
pst.setString(2, gender.getText());
pst.setString(3, grade.getText());
pst.setString(4, gender.getText());
pst.setInt(5,Integer.parseInt(stNo.getText()));

答案 2 :(得分:0)

您应该注意参数的顺序不正确stNo是第五个参数而不是第一个... 为了能够跟踪问题,请考虑调试代码,在SQL工作台上使用给定的参数phpMyAdmin测试查询,并添加Exception来捕获语句,并添加e.printStackTrace()来捕获正文。