Сохранение изменений в базе данных JAVA и SQL - PullRequest
0 голосов
/ 25 февраля 2019

Я работаю над Java GUI-приложением, которое подключается к базе данных SQL на локальном хосте (я использую XAMPP).Когда я изменяю какую-то запись, например, Возраст, я нажимаю «Сохранить изменения», она сохраняется и изменения вносятся в базу данных SQL, но когда я нажимаю «>» или «<», чтобы просмотреть следующего или предыдущего человека, а затем перейтиВозвращаясь к человеку, где я внес изменения, каждая запись без изменений в своем первоначальном состоянии.Но когда я закрываю приложение и снова открываю его, все внесенные изменения сделаны.Я думаю, это часть кода, где есть ошибка.Спасибо. </p>

private void jButtonSaveChangesActionPerformed(java.awt.event.ActionEvent evt) {                                                 
            try {                                                 
                Statement stmt = con.createStatement();
                try {
                    String query1 = "UPDATE list1 SET " +
                            "name ='" + jTextFieldName.getText() + "', " +
                            "surname ='" + jTextFieldSurname.getText() + "', " +
                            "age ='" + jTextFieldAge.getText() + "' " +
                            "WHERE ID = " + jLabelActualID.getText();
                    stmt.executeUpdate(query1);
                } catch (Exception e) {
                    System.err.println(e);
                }
            } catch (Exception e) {
              System.err.println(e);
            }
    }

Изображение приложения:

enter image description here

1 Ответ

0 голосов
/ 25 февраля 2019

Вы не закрываете, что можно сделать более безопасно и автоматически с помощью try-with-resources.

Это означает, что фиксация еще не может произойти.Существует также параметр автоматической фиксации.

        String query1 = "UPDATE list1 SET " +
                        "name = ?, " +
                        "surname = ?, " +
                        "age = ? " +
                        "WHERE ID = ?";
        try (PreparedStatement stmt = con.prepareStatement(query1)) { // Closes stmt.
            stmt.setString(1, jTextFieldName.getText());
            stmt.setString(2, jTextFieldSurname.getText());
            stmt.setInt(3, Integer.parseInt(jTextFieldAge.getText()));
            stmt.setString(4, jLabelActualID.getText());
            int updateCount = stmt.executeUpdate();
         } catch (SQLException | NumberFormatException e) {
             System.err.println(e);
         }

То же самое может храниться (или не поддерживаться) для соединения SQL.

Также следует использовать PreparedStatement для безопасности (внедрение SQL) ивведите безопасность / экранирование обратной косой черты, кавычки в строках.Как вы видите, он еще более читабелен.

Другой случай - второе приложение, обращающееся к базе данных: оно может использовать свой собственный кэш, тем самым будучи немного устаревшим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...