[英]Package and use embedded database (H2.db file) inside a Jar?
我正在為我的應用程序使用H2嵌入式數據庫。 我想在其自己的Jar中包含應用程序所需的所有內容,如果可能的話, 包括它的數據庫 。 我的應用程序不需要創建臨時文件或任何東西,所以基本上用戶只運行Jar。
是否可以在Jar中嵌入數據庫,並且能夠INSERT
新記錄以及SELECT
out?
編輯:只是為了澄清,我不打算將H2驅動程序jar嵌入我的可分發jar中,我希望將h2數據庫文件( someDatabase.h2.db
文件)嵌入到Jar中並仍然能夠寫入/從該數據庫中讀取。
如果您希望將myDatabase.h2.db
文件嵌入.jar
,您可以這樣做,但您將擁有對數據庫的只讀訪問權限。 由於.jar
文件是只讀的,因此無法修改它們,因此無法執行INSERT
, DELETE
或任何DDL命令。
話雖如此,下面是如何將其嵌入只讀的解釋。
根據H2的文件 :
JDBC URL "jdbc:h2:~/myDatabase"
告訴H2引擎在當前用戶的主目錄中查找名為myDatabase.h2.db
的數據庫文件。
JDBC URL "jdbc:h2:file:/myDatabase"
告訴H2引擎在當前目錄 (執行java程序的位置)中查找名為myDatabase.h2.db
的數據庫文件。
如果將h2.db
文件嵌入到.jar
,則無法以簡單的方式訪問它。 它只能作為zip文件中的文件進行訪問。
為了使H2使用它,你必須使用zip作為URL:
jdbc:h2:zip:~/data.zip!/test
請參閱“ Zip或Jar文件中的只讀數據庫 ”中的更多內容。
當您將文件作為資源嵌入jar中時,您可能會獲得它的相對URL。 使用...
MyClass.class.getClassLoader().getResource("myDatabase.h2.db")
......你會得到類似的東西:
jar:file:/C:/folder1/folder2/myJar.jar!/myDatabase.h2.db
然后,您可以將其作為String進行操作,並將其作為JDBC URL連接傳遞給H2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.