将sqlite DB添加到可执行的JAR文件中

gra*_*n33 8 java eclipse jdbc

我正在使用JAVA(使用eclipse juno)并尝试创建一个包含sqlite DB文件的可执行JAR文件.我试图通过这一行获得与DB的连接:

DriverManager.getConnection("jdbc:sqlite:"+DataController.class.getResource("test.sqlite").getPath())
Run Code Online (Sandbox Code Playgroud)

DataController是一个位于sqlite所在位置的类.

我一直得到一个错误:

java.sql.SQLException: invalid database address
Run Code Online (Sandbox Code Playgroud)

有人可以帮助并提供有关如何在可执行JAR文件中包含sqlite DB的分步说明吗?

jab*_*bie 12

显然sqlite-jdbc可以自己打开资源.根据此主题https://groups.google.com/forum/?fromgroups=#!topic/xerial/Oayzj5nrJGk,将:resource添加到路径中.请尝试以下方法:

DriverManager.getConnection("jdbc:sqlite::resource:package/test.sqlite"); 
Run Code Online (Sandbox Code Playgroud)

或取决于sqlite的版本

DriverManager.getConnection("jdbc:sqlite::resource:package/test.db"); 
Run Code Online (Sandbox Code Playgroud)

用'/'分隔的路径替换包到此文件所在的包.

请注意,它实际上会将文件复制到tmp目录.-

  • 如果您的数据库(如我的)只是在项目的*resources*目录中,那么以下连接字符串就足够了:`jdbc:sqlite :: resource:test.sqlite`或`jdbc:sqlite :: resource:test. db`取决于您的SQLite版本.我花了太多时间试图解决这个问题.URI的"资源"添加是使其工作的原因,因为没有它,驱动程序会假定您的数据库与连接到它的文件位于同一目录中. (2认同)