【问题标题】:How to use SQLite database inside jar file?如何在 jar 文件中使用 SQLite 数据库?
【发布时间】:2011-09-23 20:40:20
【问题描述】:

我不知道如何在 Java .jar 文件中包含 SQLite 数据库以进行部署(通过 Java WebStart)。

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

顺便说一下,使用 Eclipse。

【问题讨论】:

  • 棘手。使用Apache Derby 或类似的可嵌入数据库似乎要容易得多。

标签: java sqlite jar java-web-start


【解决方案1】:

SQLite 需要单独的文件,因为how the engine ensures locking and ACID。即使不需要更新数据库,SQLite 也仅设计用于直接文件访问(或内存支持,但不是从 Java 或其他主机提供的 ;-) - SQLite 在这里表明它不是纯 Java 解决方案,也不是为不使用基本系统 IO 子系统的系统设计的。

SQLite 数据文件可以在开始时从 JAR 中提取到一个临时位置(如果需要,最后放回那里) - 但不是类似于这种方法的东西,不可能。任务本身并不复杂,但需要完成另一件事,并且可能需要在某些环境中不可用的额外权限。

编码愉快。

【讨论】:

    【解决方案2】:

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

    其他选项是存储 sqlite 数据库的转储

    sqlite3 .dump
    

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

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

    【讨论】:

    • 这至少是一个聪明的解决方案,而且看起来很简单。对于此应用程序,启动时间具有一定的灵活性。我会试一试,然后回复你。谢谢!
    【解决方案3】:

    另一个值得考虑的好选择是 derby,javadb。它现在与 java 捆绑在一起,安装速度非常快,性能也很好。

    问候, 斯蒂芬

    【讨论】:

    • 至少到目前为止,这似乎是正确的解决方案。谢谢。
    【解决方案4】:

    将 SQLite 数据库放入项目内的资源文件夹(包)中。

    这样连接:

    public class SQLiteProject extends javax.swing.JFrame {
        :
    private void formWindowOpened(java.awt.event.WindowEvent evt) {                                  
        CModel.connectDB(getClass().getResource("/resources/database.sqlite").toString());
    }                                 
    
    
    public class CModel {
        :
    public static Connection connectDB(String cstr) {
        try {
            Class.forName("org.sqlite.JDBC");
            Conn = DriverManager.getConnection("jdbc:sqlite::resource:" + cstr);
            JOptionPane.showMessageDialog(null, "Connect!");
            return Conn;
        } catch (ClassNotFoundException | SQLException | HeadlessException e) {
            JOptionPane.showMessageDialog(null, e);
        }
        return null;
    }
    

    使用 Add JAR/Folder 下载并添加 sqlite-jdbc-3.8.7.jar 库 ...

    使用 Clean 和 Build 构建项目(创建 dist 文件夹并复制库)

    使用以下方法制作一个胖罐: http://www.oracle.com/technetwork/articles/javase/single-jar-141905.html

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多