我可以再次使用一些帮助,出于想法。:(我正在制作将使用SQLite数据库的JavaFX应用程序。使用OpenJDK 14和OpenJFX14。在我的Eclipse中,一切都运行良好。我尝试测试使用JPackage制作安装程序,这也有效。当我开始安装应用程序时,它启动正常,但出于某种原因拒绝与数据库连接。
以下是我的项目结构:
我有一个按钮,当阶段加载时,我检查连接。它位于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文件被JPackage保存在/app文件夹中。我试着手动复制波雷斯。db到根文件夹,其中*。exe为。奇怪的是,状态标签在这种情况下不会改变。它应该,它必须返回真或假,我不明白。
这是开始时的舞台外观:
即使我在/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中工作对我来说毫无意义,安装后也没有意义。
如果您使用以下命令运行jpack,您需要检查并可能修复以下几个地方:
jpackage --name SQLiteTest --input C:\Users\Dalibor\Documents\NetBeansProjects\SQLiteTest\dist --main-jar SQLiteTest.jar --runtime-image hello\myjre
打开Windows控制台,以便可以看到它提供的错误消息-使用jpackage-win console。
安装JPacked版本后,请检查版本目录结构。
>
确保它包含sqllite jdbc。jar文件。如果未找到,请修复您的目录以添加jar。
检查应用程序xxx。生成的应用程序的cfg文件。它必须包含所有jar依赖项,包括sqlite jdbc。jar,例如:
app.classpath=$ROOTDIR\app\jars\xxxx.jar;$ROOTDIR\app\jars\sqlite-jdbc.jar
检查您用于构建运行时映像的jlink命令hello\myjre
是否包含--add-模块java.sql
以结合所需的SQL依赖项。
jpack构建的安装程序创建的应用程序结构与Eclipse中的结构不同-文件位于app
目录下,最重要的是该版本仅具有管理员权限可编辑。使用System属性java.launcher.path
将SqlLite数据库的位置调整为可编辑位置,并且不屏蔽异常:
public static Connection poveziBazu() {
File baza = new File("Porez.db");
String jhome = System.getProperty("java.launcher.path");
if (jhome != null) {
baza = new File(System.getProperty("user.home"), "Porez.db");
}
System.out.println("Connecting to "+baza.getAbsolutePath()+" exists()="+baza.exists());
try {
return DriverManager.getConnection("jdbc:sqlite:"+baza.getAbsolutePath());
} catch (Exception e) {
System.out.println("Failed connecting to: "+baza);
throw new RuntimeException("Failed to open or create db: "+baza, e);
}
}
构建一个基本的基于sqlite的登录/注册应用程序。点击登录后App崩溃。 有什么想法吗? databaseHelper.java: display.java: contact.java:
然而,敬虔加上知足的心便是大利了,因为我们没有带什么到世上来,也不能带什么去,只要有衣有食,就当知足。但那些想要发财的人,就陷在迷惑、落在网罗和许多无知有害的私欲里,叫人沉在败坏和灭亡中。贪财是万恶之根。有人贪恋钱财,就被引诱离了真道,用许多愁苦把自己刺透了。(1 TIMOTHY 6:6-10) SQLite数据库 SQLite是一个小型的关系型数据库,它最大的特点在于不需要服务器、零配置。前面的
创建数据库之后,如何执行DDL语句来创建表?
问题内容: 我正在寻找一种使用Swift代码在我的应用程序中访问SQLite数据库的方法。 我知道我可以在Objective C中使用SQLite包装器并使用桥接头,但是我希望能够完全在Swift中完成此项目。如果可以的话,有没有办法做到这一点,有人可以将我指向一个引用,该引用显示了如何提交查询,检索行等。 问题答案: 虽然您可能应该使用许多SQLite包装器之一,但如果您想知道如何自己调用SQL
你能帮我解决缺栏的问题吗?在我看来,我做的每件事都是对的,但我得到的错误是,某一列有问题。 错误 E/SQLiteLog:(1)没有这样的列:Stezenie D/AndroidRuntime:关闭VM E/AndroidRuntime:致命异常:主进程:com。实例apkadlapacjenta,PID:11261 java。lang.RuntimeException:无法启动活动组件信息{co
主要内容:语法,实例SQLite 的 DETACH DATABASE 语句是用来把命名数据库从一个数据库连接分离和游离出来,连接是之前使用 ATTACH 语句附加的。如果同一个数据库文件已经被附加上多个别名,DETACH 命令将只断开给定名称的连接,而其余的仍然有效。您无法分离 main 或 temp 数据库。 如果数据库是在内存中或者是临时数据库,则该数据库将被摧毁,且内容将会丢失。 语法 SQLite 的 DET