添加sqlite的DB到可执行的JAR文件(add sqlite DB to executable

2019-08-17 06:35发布

我使用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数据库步说明,得到步骤?

Answer 1:

显然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.-



Answer 2:

::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部分必须以/



Answer 3:

我不知道这在最近JDBC版本已经改变,但与它摆弄了大约一个小时,让各种异常(MalformedURLException的和“数据库已经关闭”)后,我发现,以下为我工作:

DriverManager.getConnection("jdbc:sqlite::resource:file:/path/to/database.db")

的:文件:部分似乎是从其他的答案失踪,我无法得到它没有它的工作。

另外,还要注意的是,

/path/to/database.db

从.jar文件的根目录,而不是一个正常的资源根开始的绝对路径。



Answer 4:

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的根。 我与Mavennotepadd ++开发



文章来源: add sqlite DB to executable JAR file