添加的 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 数据在断开连接之前不会刷新的主要内容,如果未能解决你的问题,请参考以下文章
如何断开 Glassfish 上的所有 JDBC 连接并解锁 H2 数据库?
由于从挂起的 *** 连接断开而不中断工作流而刷新网络驱动器的方法
org.h2.jdbc.JdbcSQLException:连接断开:“java.net.ConnectException:连接被拒绝:连接:本地主机”[90067-193]