gpt4 book ai didi

java - h2(嵌入模式)数据库文件问题

转载 作者:太空狗 更新时间:2023-10-29 22:54:26 25 4
gpt4 key购买 nike

在我的src目录下有一个h2-database文件(Java,Eclipse):h2test.db

问题:

  • 从命令行启动 h2.jar(以及端口 8082 上的 h2 浏览器界面),我在 h2test.db 中创建了 2 个表,“test1”和“test2”,并且我已经放入了一些数据在其中;

  • 当尝试从 Java 代码 (JDBC) 访问它们时,它抛出“未找到表异常”。 java 代码中的“显示表”显示了一个包含 0 行的结果集。

  • 此外,当从 java 代码(CREATE TABLE ... 等)创建新表('newtest')时,之后启动 h2.jar 浏览器界面时我看不到它;只显示了其他两个表(“test1”和“test2”)(但是新创建的表“newtest”可以从 java 代码访问)。

我对嵌入式数据库没有经验;我相信我在这里做一些根本错误的事情。我的假设是,我正在访问同一个文件——一次是从 java 应用程序,一次是从 h2 控制台浏览器界面。我似乎无法理解,我在这里做错了什么?

编辑:根据要求,添加一些代码:

Java代码:

Class.forName("org.h2.Driver");
String url = "jdbc:h2:" + "db/h2test.db";
String user = "aeter";
String password = "aeter";
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement ps2 = conn.prepareStatement("Show tables;");
ResultSet rs = ps2.executeQuery();

这个结果集有 0 行(没有表格),而不是显示 2 个表格。

H2 控制台-浏览器界面设置:

Settings: Generic h2(embedded)driver class: org.h2.DriverJDBC URL: jdbc:h2:../../workspace/project_name/src/db/h2test.dbuser name: aeterpassword: aeter 

EDIT2:我将数据库复制到一个新文件夹。现在,新文件夹中的 db 文件与“newtest”表(来自 java 代码)以及“test1”和“test2”表(来自控制台浏览器 h2 界面)一起显示 - 与旧数据库完全相同文件被显示。所以问题仍然存在于 db 文件的副本。

最佳答案

对于嵌入式模式,您需要检查路径。例如,使用相对于您的主目录的路径:

"jdbc:h2:file:~/db/h2test.db"

当然,请使用完整路径:

"jdbc:h2:file:/users/aeter/db/h2test.db"

为方便起见,附加 ;IFEXISTS=TRUE 以避免创建虚假的数据库文件。

参见 Connecting to a Database using JDBC了解更多。

H2 Server URL 相对于 -baseDir 指定为 main() 的参数。

关于java - h2(嵌入模式)数据库文件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2442867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com