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