【问题标题】:Java app with embedded DERBY DB带有嵌入式 DERBY DB 的 Java 应用程序
【发布时间】:2012-04-05 09:21:32
【问题描述】:

我正在尝试制作具有嵌入式 DB(derby DB)的可执行 JAVA 应用程序,但遇到了一些问题,需要您的宝贵帮助。

也就是说,我使用 Eclipse 作为环境。 我将 Java 应用程序导出到 RUNNABLE JAR 文件,它在我的台式机上运行良好。

这个想法是制作EXE双击图标并将其发送到另一台没有JAVA背景/环境的机器......所以重点是将它发送给另一个只会获取exe文件的用户,双击它并使用它。

数据库不仅是可读的,因为应用程序正在向表中插入数据。 所以,它在我的机器上运行良好,但是当我将相同的 JAR 文件发送到另一台机器时,我收到错误: “架构测试不存在” 我可以看到应用程序但没有任何数据,就像与数据库没有连接一样。所以,没用。

即使我使用 JSmooth、Install4j.... 将 JAR 转换为 exe 文件,我也会遇到同样的错误。 所以,首先我必须让 JAR 文件在另一台机器上工作。

在我看来,我对 DB 文件做错了。

请让我知道您还需要我提供哪些信息,并告诉我该怎么做。

【问题讨论】:

  • 你在哪里存储你的数据库数据?你把 db 数据文件放在哪里?

标签: java derby


【解决方案1】:

如果应用程序打算在运行时读取和写入数据,则它不能完全包含在 JAR 文件中,因为您不能将可更新的 Derby 数据库放在 JAR 文件中。您将需要一些“安装过程”,也许是您在用户第一次双击应用程序时运行的一些逻辑,即 (a) 在用户机器上为 Derby 数据库找到合适的位置,(b ) 创建数据库并定义所有表、视图等,(c) 加载任何初始数据。

然后,在应用程序的后续运行中,它将能够重新打开数据库并继续使用它。

【讨论】:

  • 感谢您的回答,但是如果我需要在用户机器上创建所有内容,那么嵌入式数据库的意义何在?关键是用户根本不应该知道数据库。当我把这个: con = DriverManager.getConnection("jdbc:derby:myDB;create=true;user=app;password=app");我得到的错误是:表/视图“PREMIER”不存在。我不明白,因为每次双击应用程序时,它都会检查表是否存在,如果不存在,它会创建。看起来像它在 JAR 文件中丢失了,因为它在 eclipse 中可以正常工作。
  • "jdbc:derby:myDB;create=true" 告诉 Derby “在相对于当前工作目录的文件夹 'myDB' 中查找数据库文件。如果它们不存在,请转到并悄悄创建一个全新的空数据库”。因此,鉴于您所看到的行为,您的应用程序似乎每次双击时都会获得一个新的临时工作目录。如果您希望数据在运行之间保持不变,则需要确定磁盘上存储该数据的位置,并且需要在连接 URL 中指定 那个 位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 2012-09-23
相关资源
最近更新 更多