2012-02-27 127 views
32

所以我剛剛開始學習數據庫如何工作,如何使用SQL等。並決定開始在我的Java應用程序(特別是H2數據庫)中實現一個嵌入式數據庫,並且似乎在我編碼的計算機上工作得很好。H2的嵌入式數據庫在哪裏存儲數據?

當我移到另一臺計算機繼續我的編碼時,我注意到即使我移植嵌入式數據庫文件(h2 - *。jar)我在第一臺計算機上創建的所有準備好的表都不存在第二個。我不知何故有一個先入爲主的觀點,即通過數據庫引擎生成的實際數據也存儲在嵌入式數據庫文件中。

所以我的問題是,數據庫中的數據實際存儲在哪裏?是否可以準備一個已經包含數千個記錄並將其與實際應用程序一起分發的數據庫?

我還應該提到,我連接到第一臺計算機上的數據庫的方式是通過JDBC連接,即URL:JDBC:h2:〜/ test,當我試圖連接到第二臺計算機上的數據庫時不存在。

謝謝!

回答

61

閱讀FAQ

到哪裏都是在數據庫文件存放?

使用數據庫URL(如jdbc:h2:~/test)時,數據庫存儲在用戶目錄中。對於Windows,通常這是C:\Documents and Settings\<userName>C:\Users\<userName>。如果未設置基礎目錄(如jdbc:h2:./test),則數據庫文件將存儲在應用程序啓動的目錄(當前工作目錄)中。從開始菜單使用H2 Console應用程序時,這是<Installation Directory>/bin。基本目錄可以在數據庫URL中設置。可以使用固定或相對路徑。當使用URL jdbc:h2:file:./data/sample時,數據庫存儲在目錄數據中(相對於當前工作目錄)。如果該目錄尚不存在,該目錄會自動創建。也可以使用完全限定的目錄名稱(對於Windows,驅動器名稱)。例如:jdbc:h2:file:C:/data/test

+1

如果不是很明顯,在Linux/MacOSX系統上,H2數據庫文件存儲在JDBC URL的路徑下,所以可以在$ HOME/test。*中找到〜/ test。 .db'''。 – DuffJ 2014-03-08 13:53:56

10

h2-*.jar只是數據庫的引擎(代碼)。它是隻讀的,並不存儲任何信息。 H2中的數據可以存儲在內存中,也可以存儲在指定文件的磁盤中。實際上,您指定一個:

JDBC:h2:~/test/ 

你會發現你的數據庫在你的home目錄下的子目錄test。只需將這些文件複製到另一臺計算機上的主目錄,只要它使用相同的URL,H2就會找到它們。

+1

它應該是'jdbc:h2:〜/ test'而不是'jdbc:h2:〜test /'。 – 2012-02-27 11:18:12