+-
为什么此代码的更新按钮不起作用? [关闭]

这是用于更新已输入的数据库中的记录的代码。程序运行没有错误。但在我更新现有记录后,它没有在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
投票

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
投票

它的逻辑错误.... 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()));
0
投票

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