2008-09-30 109 views
28

目前,我們使用HSQLDB作爲嵌入式數據庫,但我們搜索數據庫以較少的內存佔用的數據量的增長。嵌入在Java數據庫H2編程

Derby/JavaDB是不是現在的選擇,因爲它在系統屬性中存儲全球性質。所以我們想到了h2

當我們使用HSQLDB時,我們創建了一個Server對象,設置參數並啓動它。這被描述爲here(並且在類org.hsqldb.test.TestBase中作爲示例給出)。

問題是:這是否也可以與h2數據庫類似?你有任何代碼樣本嗎?掃描h2頁面,我沒有找到一個例子。

回答

24

從下載,我看到該文件tutorial.html有這個

import org.h2.tools.Server; 
... 
// start the TCP Server 
Server server = Server.createTcpServer(args).start(); 
... 
// stop the TCP Server 
server.stop(); 
63

是的,你可以在嵌入模式運行H2。你只需要使用JDBC驅動程序,並連接到一個嵌入的URL是這樣的(他們的例子):

這個數據庫可以在嵌入式 模式中使用,或者在服務器模式。在 嵌入模式下使用它,你需要:如果你正在尋找

import org.h2.jdbcx.JdbcDataSource; 
// ... 
JdbcDataSource ds = new JdbcDataSource(); 
ds.setURL("jdbc:h2:˜/test"); 
ds.setUser("sa"); 
ds.setPassword("sa"); 
Connection conn = ds.getConnection(); 

:使用JDBC連接到嵌入式數據庫H2的

* Add h2.jar to the classpath 
* Use the JDBC driver class: org.h2.Driver 
* The database URL jdbc:h2:~/test opens the database 'test' in your user home directory 

示例(改編自http://www.h2database.com/javadoc/org/h2/jdbcx/JdbcDataSource.html)在純粹的內存/嵌入模式下使用H2,你也可以這樣做。請參閱此鏈接更多:

你只需要使用一個特殊的URL在正常JDBC代碼,如 「爲jdbc:H2:MEM:DB1」。

+0

我需要設置「屬性」對,說:我要 - 至少 - 設置數據庫所在目錄這就是爲什麼我們不能用德比/ JavaDB之外,因爲它使用的系統屬性,如規定的原因在問題中。 – Georgi 2008-10-01 01:41:55