我使用JAVA(与Eclipse JUNO),并尝试建立一个可执行的JAR文件,其中包括sqlite的DB文件。 我一直试图让该线路连接到数据库:
DriverManager.getConnection("jdbc:sqlite:"+DataController.class.getResource("test.sqlite").getPath())
该DataController类是位于源码所在的位置的一类。
我不断得到一个错误:
java.sql.SQLException: invalid database address
是否有人可以帮助和如何包括一个可执行的JAR文件中的SQLite数据库步说明,得到步骤?
显然sqlite的-JDBC可以在它自己的开放资源。 每此线程https://groups.google.com/forum/?fromgroups=#!topic/xerial/Oayzj5nrJGk ,加:资源的路径。 因此,尝试以下操作:
DriverManager.getConnection("jdbc:sqlite::resource:package/test.sqlite");
或取决于源码的版本
DriverManager.getConnection("jdbc:sqlite::resource:package/test.db");
用“/”分隔路径到封装该文件是在更换包装。
请注意,它会在文件实际上复制到TMP directory.-
该::resource
的方式是正确的。 而这些说明会帮助,如果你正在使用::resource
,但仍得到这样的错误, resource database.db not found: java.net.MalformedURLException: no protocol: database.db
像宋体。
最常见的anwsers是: DriverManager.getConnection("jdbc:sqlite::resource:path/to/database.db")
然而, path/to/database.db
必须是准确的路径( 在实际文件系统路径而不是在罐 )到您的jar文件。
我建议使用getClass().getResource()
DriverManager.getConnection("jdbc:sqlite::resource:" +
getClass().getResource("/path/to/db/in/the/jar/file"))
注 : /path/to/db/in/the/jar/file
部分必须以/
我不知道这在最近JDBC版本已经改变,但与它摆弄了大约一个小时,让各种异常(MalformedURLException的和“数据库已经关闭”)后,我发现,以下为我工作:
DriverManager.getConnection("jdbc:sqlite::resource:file:/path/to/database.db")
的:文件:部分似乎是从其他的答案失踪,我无法得到它没有它的工作。
另外,还要注意的是,
/path/to/database.db
从.jar文件的根目录,而不是一个正常的资源根开始的绝对路径。
jdbc:sqlite::resource:notes_app.db
为我工作。 我的数据库(notes_app.db)是生成jar文件的根目录。
public class Database {
public static Connection con () throws SQLException {
String url = "jdbc:sqlite::resource:notes_app.db";
return DriverManager.getConnection(url);
}
}
我notes_app.db是在生成JAR的根。 我与Maven和notepadd ++开发