【问题标题】:Accessing derby database from jar从 jar 访问 derby 数据库
【发布时间】:2014-09-18 12:45:23
【问题描述】:

我在 derby 中创建了数据库,并将其存储在项目文件夹根目录的 /data 文件夹中。在我使用嵌入式驱动程序的应用程序中。当我从 netbeans 运行我的应用程序时,我没有收到任何错误。当我构建应用程序并运行 jar 时,我得到 database not found error 。这是我用来连接数据库的代码。

Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

            Properties p = new Properties();
            p.put("user", "usman");
            p.put("password", "******");
            DriverManager.getConnection("jdbc:derby:data/SalePurchase", p);

谁能告诉我当我在 jar 中运行数据库文件夹“SalePurchase”时如何访问它。 .

【问题讨论】:

  • 为了良好的秩序:数据库 inside 是 jar 还是外部的?内部,作为资源,最好复制到System.getProperty("user.home") + "/SalePurchase.db"左右。
  • @JoopEggen 我的项目文件夹根目录的数据文件夹中有数据库文件夹。我想构建项目,制作项目的可运行jar并访问数据库
  • 然后做File.copy(getClass.getResourceAsStream("/data/SalePurchase.db"), Paths.get(System.getProperty("user.home") + "/SalePurchase.db"));外部安装数据库;连接 URL “jdbc:derby:~/SalePurchase”。

标签: java derby javadb


【解决方案1】:

data/SalePurchase 是一个相对路径。问题是它与什么有关。 manual () 声明

您可以在 Derby 启动时通过指定名为 derby.system.home 的 Java 系统属性来定义系统目录。如果在启动 Derby 时不指定系统目录,则当前目录将成为系统目录。

Derby 使用 derby.system.home 属性来确定哪个目录是它的系统目录 - 从而确定它的系统中有哪些数据库、在哪里创建新数据库以及要使用哪些配置参数。有关此属性的更多信息,请参阅 Derby 参考手册。

如果您在启动时指定一个不存在的系统目录,Derby 会自动创建这个新目录,从而创建一个没有数据库的新系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    相关资源
    最近更新 更多