【发布时间】:2020-08-23 19:47:08
【问题描述】:
我可以再次使用一些帮助,没有想法。 :( 我正在制作将使用 SQLite 数据库的 JavaFX 应用程序。使用带有 OpenJFX14 的 OpenJDK 14。在我的 Eclipse 中,一切都运行良好。我尝试测试以使用 JPackage 制作安装程序,这也有效。当我启动安装的应用程序时,它启动正常,但由于某种原因拒绝连接数据库。
这是我的项目结构:
我有一个按钮,在加载 Stage 时我会检查连接。它在 PocetnaController 文件中:
//testiranje konekcije nakon instalacije
@FXML
public void btnObracunClick(ActionEvent event) {
lblStatus.setText(model.povezanaBaza());
}
这是来自 PocetnaModel 的代码:
public String povezanaBaza() {
this.konekcija = Konekcija.poveziBazu();
return (this.konekcija != null) ? "Веза са базом успостављена" : "Повезивање са базом није успело.";
}
如果为 true,它会以我的语言返回“已建立数据库连接”,如果为 false,则返回“与数据库的连接失败”。
我再说一遍,在 Eclipse 中一切正常。但是,当启动安装的应用程序时,我得到“与数据库的连接失败”。所以连接由于某种原因返回 null。
我的 db 文件由 /app 文件夹中的 JPackage 复制。我试图手动将 Porez.db 复制到 *.exe 所在的根文件夹。奇怪的是,在这种情况下状态标签不会改变。而且应该,它必须返回true或false,不明白。
这是开始时的舞台外观:
即使我重命名 /app 文件夹中的数据库文件,所以找不到我的连接仍然返回 false 并相应地更新状态,这没关系。
这是负责连接的整个 Konekcija 文件:
public static Connection poveziBazu() {
File baza = new File("Porez.db");
try {
if (baza.exists()) {
Connection con = DriverManager.getConnection("jdbc:sqlite:Porez.db");
return con;
} else {
return null;
}
} catch (Exception e) {
return null;
}
}
我的第一个怀疑是我创建的 JAR 有问题,但不能确定。在 Eclipse 中工作对我来说毫无意义,安装后也没有。
【问题讨论】:
-
您的应用程序中不能有您的数据库文件。