如何在jar文件中使用SQLite数据库?

2022-09-04 19:41:50

我无法弄清楚如何将SQLite数据库包含在Java.jar文件中以进行部署(通过Java WebStart)。

数据库不需要在运行时更新...它本质上是一个美化的配置文件。

顺便说一句,使用Eclipse。


答案 1

SQLite需要单独的文件,因为引擎如何确保锁定和ACID。即使不需要更新数据库,SQLite也只能用于直接文件访问(或内存支持,而不是由Java或其他主机提供的内存支持)。SQLite表明它不是一个纯粹的Java解决方案,也不是为不使用基本系统IO子系统的系统设计的。

SQLite数据文件可以从JAR中提取到开始时临时位置(如果需要,可以在结束时放回该位置) - 但除了类似于此方法的东西之外,不可能。任务本身并不复杂,但这是另一件需要完成的事情,可能需要某些环境中没有的额外权限。


答案 2

你有没有考虑过HSQLDB?让HSQLDB工作可能比弄清楚如何使用sqlite做到这一点要快得多。我知道你说它是只读的,但这显然不是你配置sqlite的方式。

另一个选项是存储 sqlite 数据库的转储

sqlite3 .dump

,在启动时通过 getResourceAsStream() 从类路径读取它,并在应用程序启动时创建数据库。显然,这会增加启动开销,并不理想,但可能会在紧要关头工作。

编辑:刚刚找到代码来实际创建数据库编程在这里。根据数据库的大小,存储SQL(必要时压缩)并在启动时创建数据库可能并不那么可怕。


推荐