Почему кнопка обновления этого кода не работает?

0

Вот код для обновления записи в базе данных, которая уже введена. Программа работает без ошибок. Но после того, как я обновляю существующую запись, она не обновляется в БД.

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
    Я бы сказал, что setInt (1) не является тем, что он указывает на имя.
Теги:

3 ответа

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()));
  • 0
    Это вопрос «опечатки», на который, вероятно, не следует отвечать. Он почти наверняка будет закрыт, и после этого он может быть удален, так как он бесполезен для широкой аудитории.
1

Его логическая ошибка.... 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()));
0

Следует помнить, что порядок параметров неправильный. StNo - это не первый, а пятый параметр... также, чтобы можно было отследить проблему, рассмотрите возможность отладки кода, протестируйте запрос с данным параметром в инструментальных средствах SQL, phpMyAdmin и добавьте Исключение для оператора перехвата и добавления e.printStackTrace() для перехвата тела.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню