gpt4 book ai didi

java - 如何使用具有读/写访问权限的 SQLite 数据库部署 javafx 应用程序

转载 作者:行者123 更新时间:2023-11-30 03:17:10 29 4
gpt4 key购买 nike

我制作了一个 javafx 应用程序,并为用户进行了安装。

我按照oracle文档进行打包和安装,并自定义了配置文件以允许用户选择他想要安装应用程序的目录。

所以,我想要这样的场景:无论用户选择在哪里安装应用程序,他都可以写入数据库。

问题是:如何在共享系统文件夹中部署 SQLite 数据库?

提前感谢您的建议

最佳答案

将其保存到用户主目录怎么样?他应该有足够的权限来读/写它。您可以通过 System.getProperty("user.home");

向 Java 请求用户主页<小时/>

编辑:JDBC 解决方案

您可以通过在 JDBC 连接字符串中使用 jdbc:sqlite:filename.db 在应用程序中创建 SQLite DB。这会在当前目录中创建它,因此不要使用 filename.db 使用类似

的内容
String filePath = System.getProperty("user.home")+System.getProperty("file.separator")+"myDBfile.db";
Connection connection = DriverManager.getConnection("jdbc:sqlite:"+filePath);

这将创建与位于当前用户主目录中的数据库文件的连接。如果该文件不存在,它将创建它。现在的问题是,这个数据库文件是空的。我认为你有更多的可能性来处理它。例如,使用CREATE TABLE IF NOT EXISTS table_name(..)

用户在哪里安装应用程序并不重要,因为数据库路径设置为他的主目录而不是工作目录,并且应用程序将始终在那里查找它。

<小时/>

编辑:JPA 解决方案

总体思路是覆盖 persistence.xml 中的 url 属性。这可以通过在创建 EntityManagerFactory 时向 Persistence.createEntityManagerFactory() 提供属性映射来完成。非常好的例子是 here .

以下示例代码应创建 EMF,以便与用户主目录中的数据库一起使用(filePath 的定义与上面相同)。

Map<String, String> persistenceMap = new HashMap<String, String>();
persistenceMap.put("javax.persistence.jdbc.url", "jdbc:sqlite:" + filePath);
EntityManagerFactory managerFactory = Persistence.createEntityManagerFactory("MyPU", persistenceMap);

关于java - 如何使用具有读/写访问权限的 SQLite 数据库部署 javafx 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32286642/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com