Вот код для обновления записи в базе данных, которая уже введена. Программа работает без ошибок. Но после того, как я обновляю существующую запись, она не обновляется в БД.
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 - это ваши 5-е параметры... поэтому данные не обновляются.
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, phpMyAdmin и добавьте Исключение для оператора перехвата и добавления e.printStackTrace() для перехвата тела.