簡體   English   中英

在Jar內部打包並使用嵌入式數據庫(H2.db文件)?

[英]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文件是只讀的,因此無法修改它們,因此無法執行INSERTDELETE或任何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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM