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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么此代码的更新按钮不起作用? [关闭]相关的知识,希望对你有一定的参考价值。

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

问题是这个代码已经过测试,我更新了一些现有的记录。但现在它没有用。

答案

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

它的逻辑错误.... 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()));
另一答案

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

以上是关于为什么此代码的更新按钮不起作用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥软键盘在对话框片段内的 Web 视图中不起作用?

添加到片段时按钮不起作用

由于提交按钮不起作用,此代码有啥问题?

java代码在片段活动中不起作用

日期选择器对话框在片段中不起作用[关闭]

Snackbar 在片段类中不起作用