【问题标题】:JavaFX8, SQLite(Embedded) exe, exec jar can't read/update the runtime databaseJavaFX8、SQLite(Embedded) exe、exec jar 无法读取/更新运行时数据库
【发布时间】:2017-12-08 23:54:27
【问题描述】:

我正在使用 JavaFx8 和 SQLite 以及 Eclipse Neon IDE 创建一个简单的桌面应用程序。该应用程序在从 Eclipse 启动以进行测试时工作正常。但是如果我创建一个可执行 jar 或 Windows Exe 文件,它不会读取/更新数据库。 这是用于创建和读取数据库的代码sn-p。

 private Connection loadPropertiesFileSQLite() throws SQLException, ClassNotFoundException {
    try {
        inputStream = new FileInputStream("databasesqlite.properties");
        properties.load(inputStream);
        Class.forName("org.sqlite.JDBC");
        // database path, if it's new database, it will be created in the project folder
        conSQLite = DriverManager.getConnection("jdbc:sqlite:Application.db");
        System.out.println("Database Opened Successfully.");
    } catch (Exception e) {
        System.out.println("DDDD");
        e.printStackTrace();
    }
    return conSQLite;
}

我使用的连接器和罐子是这些:

当用户第一次运行应用程序时,数据库是以嵌入模式创建的。 我已经搜索并尝试了从更改DriverManager.getConnection("jdbc:sqlite:Application.db"); 中的数据库位置的组合的分数 对于许多其他事情。我在这里遗漏了什么重要的东西吗?

【问题讨论】:

  • Database not read/update in executable jar/exe这一主要问题更新了问题。

标签: java eclipse sqlite jdbc javafx-8


【解决方案1】:

您是否无缘无故地使用属性文件? 有我的配置:sqlite-jdbc-3.7.15.jar //自动提交连接。 conSQLite.setAutoCommit(true);

并检查您是否拥有“Application.db”文件的权限。

【讨论】:

  • 感谢您的快速回答@Rafael Gimenes 早些时候我使用属性文件来设置连接的 URL,但在我尝试解决问题时,它最终变成了一个虚拟调用。我的错。如何检查权限以及如何设置它以防它是只读的?请指教。
【解决方案2】:

关键是使用conSQLite = DriverManager.getConnection("jdbc:sqlite::resource:File:\\{some_path}\\Application.db");

而不是

conSQLite = DriverManager.getConnection("jdbc:sqlite:Application.db");

现在一切正常。

【讨论】:

    猜你喜欢
    • 2018-12-28
    • 2019-09-26
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多