2014-08-30 103 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的應用程序。

相關問題