这是更新已输入数据库中记录的代码。程序正在运行,没有错误。但是在更新现有记录后,它在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);
}
问题是这段代码已经过测试,我更新了一些现有记录。但是现在不起作用了。
答案 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()来捕获正文。