2014-08-30 68 views
3

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

码 -

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项目中创建另一个数据库?

谢谢。

+2

您确定该URL中的斜杠前的字符是正常的代字号,而不是其他一些看起来相似的Unicode字符吗?我很确定它和错误信息中给出的例子不一样。 – 2014-08-30 23:56:10

+0

@IanRoberts - 谢谢。我从来没有使用过代字,也无法弄清楚。顺便说一句,你还可以告诉我如何在java项目中创建一个数据库,甚至可以查看它?谢谢。 – 2014-08-30 23:58:46

+0

好吧,所以我做了一个简单的测试,以确定表是RAM还是硬盘。它似乎在硬盘上。原因 - 我运行我的代码并创建了一个带有表的数据库。然后,我再次运行代码,它告诉我表已经存在。现在,我如何在硬盘中找到数据库的位置? – 2014-08-31 00:28:31

回答

6

您使用了错误的字符。你需要使用~(代字号),你有使用˜(我不知道它是什么,但它不是代字号)。

1

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

相关问题