当前位置: 首页 > 知识库问答 >
问题:

如何在可执行Jar中包含SQLite数据库?

钦永贞
2023-03-14

我创建了一个Swing应用程序,它使用SQLite作为本地数据库。数据库文件位于项目的根目录中。

Project/DatabaseFile

应用程序在Eclipse上运行良好,但当我运行打包的可执行Jar时,会出现以下错误:

No such table : table1

这意味着无法访问数据库。当我检查结果JAR文件的内容时,数据库文件已经不在了。

在代码中,我将数据库链接如下:

jdbc:sqlite:DatabaseFile

我的问题是,如何在可执行Jar中包含SQLite数据库?

编辑

当我把DB文件放在源代码文件夹项目/src/数据库文件并将路径更改为jdbc: sqlite: src/数据库文件时,它在Eclipse上工作,但在以java-jar Project.jar。它说:

path to 'src/DatabaseFile': 'C:\Users\name\src' does not exist

我想我需要为数据库指定一个相对路径。

编辑

以下是我连接数据库的方式:

public Connection getConnection(){      
    try{
        Class.forName("org.sqlite.JDBC").newInstance();             
        con = DriverManager.getConnection("jdbc:sqlite:src/DatabaseFile");              

    } catch (Exception e) {
        Log.fatal("Méthode: getConnection() | Class  : SQLiteConnection | msg system : " + e.getMessage());
    }
    return con;
}

共有2个答案

华化
2023-03-14

根据您试图访问文件路径的方式,我找到了两种不同的命名方法。假设您访问的数据库位于/yourproject/resource/或/yourproject/bin/resource(没有缩小范围,我的数据库在两者中,我很满意),您应该使用以下路径:

//Eclipse test path
String url = "jdbc:sqlite:resource/mydb.db";

//runnable jar path
String url = "jdbc:sqlite::resource:mydb.db";

然后

mysqlitedatasource.setUrl(url);

你的方式也有效。。。通过将db放入/src

澹台星光
2023-03-14

您使用的SQLite库是什么?

我根据您指示的连接URI进行了搜索,发现了这个。在留档里写着:

2009年5月19日:sqlite-jdbc-3.6.14.1发布。这个版本支持“jdbc:sqlite::resource:”语法来访问JAR归档文件中包含的只读DB文件,或通过URL、本地文件地址等指定的外部资源(另请参阅详细信息)

如果这是您正在使用的驱动程序,那么我建议使用以下连接URI:

"jdbc:sqlite::resource:DatabaseFile"

关键是,由于数据库位于jar文件中,因此不能通过FileInputStream以文件的形式访问它。相反,它必须通过JVM对它的支持来访问(即使用Class.getResource()Class)。getResourceAsStream())。请注意,jar文件中包含的资源是只读的。您将无法保存对数据库的任何更改。

 类似资料:
  • 问题内容: 我创建了一个使用SQLite作为本地数据库的Swing应用程序。数据库文件位于项目的根目录中。 该应用程序在Eclipse上运行良好,但是当我运行打包的可执行文件Jar时,出现以下错误: 这意味着数据库不可访问。当我检查生成的JAR文件的内容时,数据库文件不再存在。 在代码中,我将数据库链接如下: 我的问题是,如何在可执行的Jar中包含SQLite数据库? 编辑 当我将数据库文件放在源

  • 问题内容: 大家好,菜鸟Java问题。 我有一个Java项目,并且想在可执行jar中包含一个文本文件。现在,该文本文件位于默认程序包中。 InputFlatFile currentFile =新的InputFlatFile(“ src / theFile.txt”); 正如您使用src所看到的那样,我使用该行抓取文件。但是,这不适用于可执行jar。 有人可以让我知道如何将文件保存在可执行jar中,

  • 你能帮我解决这个问题吗? 谢了!

  • 如何在gradle中导出可执行jar,并且这个jar可以运行,因为它包含引用库。 建筑格拉德尔 跑步后:gradle build 它创建build文件夹,我在build/libs/XXX中运行jar。震击器: java-jar构建/libs/XXX. jar 这里有一个执行说明: 我如何使用参考库运行它?

  • 我正在编写Spring应用程序,我有两个外部罐子。它在IDE中工作,但是当我用maven构建可执行jar时,它失败了,错误为java.lang.NoClassDefFoundError:到我的外部jar。我谷歌了,但我仍然不知道该怎么办。请帮帮我.我在pom文件中的依赖项是: 我只是用男人包建造的。

  • 本文向大家介绍Eclipse 导出可执行Java工程/可执行Jar文件(包含第三方Jar包),包括了Eclipse 导出可执行Java工程/可执行Jar文件(包含第三方Jar包)的使用技巧和注意事项,需要的朋友参考一下 Eclipse导出可执行Java工程/可执行Jar文件(包含第三方Jar包) 师兄部署了新的虚拟机,新学期大搞起来!之前由于爬虫代码不稳定,所以一直都是直接用Eclipse运行,然