如何使用sqlite数据库部署javafx应用程序(最好使用inno脚本)

如何使用sqlite数据库部署javafx应用程序(最好使用inno脚本),sqlite,deployment,javafx,fxml,Sqlite,Deployment,Javafx,Fxml,我想部署一个JavaFXML应用程序。我使用过sqlite3数据库。我尝试使用inno脚本通过添加.db文件来部署它,第一个登录页面会显示出来,但在我输入凭据并登录到窗口后,窗口就会崩溃。我想这是因为我没有编程在弹出窗口中显示一个异常。当我在netbeans中运行时,这些程序运行得很好。请建议使用sqlite数据库部署fxml应用程序的最佳方法 项目内容: 主要项目文件 登录页面中将显示名为imagesbackground image的单独文件夹中的图像 数据库文件。 编辑 我相信问题出在失踪的

我想部署一个JavaFXML应用程序。我使用过sqlite3数据库。我尝试使用inno脚本通过添加.db文件来部署它,第一个登录页面会显示出来,但在我输入凭据并登录到窗口后,窗口就会崩溃。我想这是因为我没有编程在弹出窗口中显示一个异常。当我在netbeans中运行时,这些程序运行得很好。请建议使用sqlite数据库部署fxml应用程序的最佳方法

项目内容:

主要项目文件 登录页面中将显示名为imagesbackground image的单独文件夹中的图像 数据库文件。 编辑

我相信问题出在失踪的司机身上。它无法连接到.db文件。因此,我在连接到数据库的代码中添加了以下行

stmt.executeUpdate("CREATE TABLE IF NOT EXISTS admin_users (ID PRIMARY KEY NOT NULL, USERNAME TEXT UNIQUE NOT NULL,PASSWORD TEXT UNIQUE NOT NULL)");


现在它正在创建一个数据库文件,我在其中执行jar。它正在通过登录页面,一切正常。但是,当我使用Inno脚本部署项目时。同样的问题仍然存在,当我单击“提交”时,应用程序强制关闭。

我认为您应该提供更多信息,即日志中的异常。但基于屏幕显示和登录失败,这可能是一个数据库错误。我最近用sqlite db创建了一个Javafx应用程序,并使用Spring初始化DataSource对象。这是bean的定义。如果不使用Spring,将其与连接字符串进行比较仍然很有用

<bean id="sqlliteDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" lazy-init="true">
        <property name="driverClassName" value="org.sqlite.JDBC" />
        <property name="url" value="jdbc:sqlite:databasefile.db" />
        <property name="initialSize" value="2" />
        <property name="maxActive" value="20" />
        <property name="maxIdle" value="5" />
        <property name="poolPreparedStatements" value="true" />
    </bean>

我相信问题可能是连接字符串或缺少驱动程序,但毫无例外,我无法判断。

还有一个问题,当您使用inno script安装应用程序时,db文件也被复制了?是的,db文件被复制了,但仍然无法通过登录页面。您是否遇到异常?请添加stacktrace.Yep,Exception会很有帮助,以及初始化数据源或连接的代码段。您必须验证,当inno脚本安装应用程序时,sqlite-jdbc-x.x.x.jar是否在您的库目录中。很抱歉,回复太晚了。是当我输入credintialsusername和密码时,它显示ClassNotFoundException。它实际上在对话框中显示org.sqlite.JDBC,这意味着sqlite JDBC jar文件不在类路径上。安装后,能否验证sqlite-jdbc-x.x.x.jar是否在库目录中如果检查应用程序jar文件,则必须有一个清单文件,其中包含类路径中包含的jar文件列表。jar文件也必须在这个列表上。非常感谢您的评论。当我看到manifest文件时,它显示了lib/sqlite-jdbc-3.8.7.jar,但是我安装应用程序的地方没有lib目录,当我手动将它添加到该目录时,它工作了。
<bean id="sqlliteDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" lazy-init="true">
        <property name="driverClassName" value="org.sqlite.JDBC" />
        <property name="url" value="jdbc:sqlite:databasefile.db" />
        <property name="initialSize" value="2" />
        <property name="maxActive" value="20" />
        <property name="maxIdle" value="5" />
        <property name="poolPreparedStatements" value="true" />
    </bean>