gpt4 book ai didi

java - 在 Jar 中打包和使用嵌入式数据库(H2.db 文件)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:18:44 24 4
gpt4 key购买 nike

我正在为我的应用程序使用 H2 嵌入式数据库。我想在它自己的 Jar 中包含应用程序所需的一切,如果可能的话,包括它的数据库。我的应用程序不需要创建临时文件或任何东西,所以基本上用户只需运行 Jar。

是否可以在 Jar 中嵌入数据库,并且能够INSERT 新记录以及SELECT 输出?

编辑:澄清一下,我不希望将 H2 驱动程序 jar 嵌入我的可分发 jar 中,我希望嵌入 h2 数据库文件(someDatabase.h2.db 文件)在一个 Jar 中并且仍然能够从该数据库写入/读取。

最佳答案

如果您希望将 myDatabase.h2.db 文件嵌入到 .jar 中,您可以这样做,但是您将拥有对数据库。由于 .jar 文件是只读的,您不能修改它们,因此不能执行 INSERTDELETE 或任何 DDL 命令。

话虽如此,下面是关于如何以只读方式嵌入它的说明。

根据 H2's documentation :

JDBC URL "jdbc:h2:~/myDatabase" 告诉 H2 引擎在 中查找名为 myDatabase.h2.db 的数据库文件当前用户的主目录

JDBC URL "jdbc:h2:file:/myDatabase" 告诉 H2 引擎在 中查找名为 myDatabase.h2.db 的数据库文件>当前目录(执行java程序的地方)。

如果您将 h2.db 文件嵌入到 .jar 中,则无法以普通方式访问它。它只能作为 zip 文件中的文件访问。

为了让 H2 使用它,您必须使用 zip 作为 URL:

jdbc:h2:zip:~/data.zip!/test

在“Read Only Databases in Zip or Jar File”中查看更多信息。

当您将文件作为资源嵌入到 jar 中时,您可能会得到它的相对 url。使用...

MyClass.class.getClassLoader().getResource("myDatabase.h2.db")

...你会得到类似的东西:

jar:file:/C:/folder1/folder2/myJar.jar!/myDatabase.h2.db

然后您可以将其作为字符串进行操作,并将其作为 JDBC URL 连接传递给 H2。

关于java - 在 Jar 中打包和使用嵌入式数据库(H2.db 文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15975339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com