【问题标题】:How do I create a H2 database inside a java project in Eclipse?如何在 Eclipse 的 java 项目中创建 H2 数据库?
【发布时间】:2014-10-24 14:40:42
【问题描述】:

我想在 Eclipse 的简单 java 项目中创建一个嵌入式 H2 数据库。如何以编程方式执行此操作并将数据库打包到我的代码中?我为此尝试了SO post 并在我的代码中出错。

代码 -

public static void main(String[]args){

    JdbcDataSource ds = new JdbcDataSource();
    ds.setURL("jdbc:h2:˜/test");
    ds.setUser("sa");
    ds.setPassword("sa");
    try {
        Connection conn = ds.getConnection();
    } catch (SQLException e) {
        e.printStackTrace();
    }

}

错误 -

org.h2.jdbc.JdbcSQLException: A file path that is implicitly relative to the 
current working directory is not allowed in the database URL "jdbc:h2:˜/test". 
Use an absolute path, ~/name, ./name, or the baseDir setting instead. [90011-181]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
    at org.h2.message.DbException.get(DbException.java:179)
    at org.h2.message.DbException.get(DbException.java:155)
    at org.h2.engine.ConnectionInfo.getName(ConnectionInfo.java:398)
    at org.h2.engine.Engine.openSession(Engine.java:45)
    at org.h2.engine.Engine.openSession(Engine.java:167)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:145)
    at org.h2.engine.Engine.createSession(Engine.java:128)
    at org.h2.engine.Engine.createSession(Engine.java:26)
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:347)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:108)
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:92)
    at org.h2.Driver.connect(Driver.java:72)
    at org.h2.jdbcx.JdbcDataSource.getJdbcConnection(JdbcDataSource.java:190)
    at org.h2.jdbcx.JdbcDataSource.getConnection(JdbcDataSource.java:161)
    at MyCode.main(MyCode.java:8)

我看到了这个链接 - https://groups.google.com/forum/#!msg/h2-database/SlSwte0DLSU/eWj0UaejdkEJWhere are my H2 database files?。目前尚不清楚如何获得在我的 windows pc 上测试数据库的确切路径。

如何首先访问测试数据库,然后在我的 java 项目中创建另一个数据库?

谢谢。

【问题讨论】:

  • 您确定该 URL 中斜线之前的字符是正常的波浪号,而不是其他看起来相似的 Unicode 字符吗?我很确定它与错误消息中给出的示例中的字符不同。
  • @IanRoberts - 谢谢。我从来没有使用过波浪号,也无法弄清楚。顺便说一句,你能告诉我如何在 java 项目中创建一个数据库,甚至可以查看它吗?谢谢。
  • 好的,所以我做了一个简单的测试来确定该表是在 RAM 中还是在硬盘中。它似乎在硬盘驱动器中。原因 - 我运行了我的代码,它创建了一个带有表的数据库。然后,我再次运行代码,它告诉我该表已经存在。现在,我如何在我的硬盘中找到数据库的位置?
  • 你的文件看起来像jdbc:h2:{path}/{filename},其中文件名是{filename}.h2.db 我建议检查你的工作目录(刷新它)。或者检查用于操作系统的文档文件夹。

标签: java eclipse h2


【解决方案1】:

H2 文件的位置非常nicely documented。要查看内容,请执行 h2.jar。它不仅是驱动程序,还是一个可执行文件,可以启动基于 Web 的应用程序进行数据库管理。

【讨论】:

    【解决方案2】:

    您使用了错误的字符。你需要使用~(波浪号)并且你已经使用˜(我不知道它是什么,但它不是波浪号)。

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 2018-05-09
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      相关资源
      最近更新 更多