JAVA & SQL 数据库保存更改

标签 java sql jdbc

我正在开发 Java GUI 应用程序,该应用程序连接到本地主机上的 SQL 数据库(我使用 XAMPP)。当我更改某些条目(例如年龄)时,我单击“保存更改”,它会被保存并在 SQL 数据库中完成更改,但是当我单击“>”或“<”查看下一个或上一个人,然后转到回到人,我做了更改,每个条目的初始状态都没有变化。但是当我关闭应用程序并重新打开它时,我所做的所有更改都已完成。我认为这是代码的一部分,其中存在错误。谢谢。

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

最佳答案

您不会关闭,这可以通过 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注入(inject))和类型安全/反斜杠转义,字符串中的引号。正如您所看到的,它更具可读性。

另一种情况是第二个应用程序访问数据库:它可以使用自己的缓存,因此有点过时。

关于JAVA & SQL 数据库保存更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54865849/

相关文章:

java - 空检查语句的空指针异常

java - 哪个性能更高 - 读取 Jolokia 的 JMX 或通过 REST api 获取指标

mysql - 如何选择仅存在于数据条目范围之间的值?

Tomcat JDBC 连接池 : testOnBorrow vs testWhileIdle

java - java.sql.date 的问题

java - 准备好的语句以及连接池

java - Java中的计数排序

java - 好的 OSGi 教程

sql - 使用nodejs SQL DB2插入海量数据

java - SQL UNION 查询的 Oracle 性能限制以及如何优化