添加的 H2 数据在断开连接之前不会刷新

Posted

技术标签:

【中文标题】添加的 H2 数据在断开连接之前不会刷新【英文标题】:H2 data added wont refresh until disconnect 【发布时间】:2021-02-20 22:33:23 【问题描述】:

这是我的代码:

package logic;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Database 
    public static void main(String[] args) throws SQLException, ClassNotFoundException 
        Connection conn = null;
        Statement stmt = null;

        Class.forName("org.h2.Driver");
        conn = DriverManager.getConnection("jdbc:h2:./Database/Data", "Gustavo", "123456");
        stmt = conn.createStatement();

        stmt.execute("CREATE TABLE TEST(ID INT PRIMARY KEY,NAME VARCHAR(255));");
        stmt.execute("INSERT INTO TEST VALUES(1, 'John');");
        ResultSet rs = stmt.executeQuery("select * from test");
        
        while (rs.next()) 
            System.out.println("id " + rs.getInt("id") + " name " + rs.getString("name"));
        
        conn.close();
    

我可以添加数据并显示它,如果我再次运行代码(注释 CREATE TABLE 和 INSERT INTO)它会显示数据。

问题是,当我转到 H2 控制台时,除非我断开连接并重新连接,否则它不会显示任何内容。在我这样做之后,它会显示所做的任何更改或添加到数据库中的数据。

是有问题还是 H2 控制台是这样工作的?

(我在 Ubuntu 20.04 上,使用 vs code 和 gradle)

编辑:我解决了

问题在于我在嵌入模式下使用它的代码,它一次只允许一个连接。一旦我使用以下方法将其更改为服务器模式:

String url = System.getProperty("user.dir") + "/Database/Data";
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/" + url, "Gustavo", "123456");

【问题讨论】:

在插入语句之后尝试conn.commit();...? 可悲的是,它不能解决它。不过谢谢 很高兴你解决了它!您可以将问题中的更新移动到新的官方答案中。将来,拥有官方答案将更有可能帮助其他人。 (如果愿意,您也可以接受自己的答案。) 谢谢,我不知道。我马上就做。 作为参考,帮助中心对此有说明:Can I answer my own question? 【参考方案1】:

我解决了

问题在于我在嵌入模式下使用它的代码,它一次只允许一个连接。我使用以下方法将其更改为服务器模式:

String url = System.getProperty("user.dir") + "/Database/Data";
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/" + url, "Gustavo", "123456");

【讨论】:

以上是关于添加的 H2 数据在断开连接之前不会刷新的主要内容,如果未能解决你的问题,请参考以下文章

h2 离开锁定文件,即使只创建一个连接并立即断开连接

如何断开 Glassfish 上的所有 JDBC 连接并解锁 H2 数据库?

由于从挂起的 *** 连接断开而不中断工作流而刷新网络驱动器的方法

exchange 2010 刷新已断开连接的邮箱

org.h2.jdbc.JdbcSQLException:连接断开:“java.net.ConnectException:连接被拒绝:连接:本地主机”[90067-193]

连接断开原因