如何在Windows上更改SQLite数据库的读/写权限?

问题描述 投票:2回答:4

我使用NetBeans和SQLite数据库创建了一个软件。当我清理和构建时,可执行jar文件和数据库工作正常。它可以从数据库中读取和写入数据。

然后我使用“安装创建者”创建了.exe文件,安装软件后,在我的Windows PC上的程序文件中创建了相同的dist文件夹。当我从那个dist文件夹运行可执行jar文件时,它只能读取数据库,但无法写入。我收到这条消息

java.sql.SQLException:尝试编写只读数据库

有人可以帮我解决这个问题吗?提前致谢。

java database sqlite
4个回答
3
投票

检查一下

事实证明,问题是PDO SQLite驱动程序要求如果要进行写操作(INSERT,UPDATE,DELETE,DROP等),则数据库所在的文件夹必须具有写权限,如以及实际的数据库文件。

我在PDO SQLite驱动程序手册页的最底部的注释中找到了这些信息。


0
投票

您应该将用户特定数据写入当前用户的Application Data文件夹。

您可以从中获取ROAMING目录

String path = System.getenv("APPDATA");

或者,如果您想使其与平台无关,您可以使用getProperty,它将为您提供用户主目录,然后您可以写入特定目录:

String path = System.getProperty("user.home");

你可以在路径上形成sqlite

String sqliteUrl = "jdbc:sqlite:"+path+"sample.db";

0
投票

使用此代码行:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\databasefile.db"

我可以说这是在应用程序文件夹中创建数据库的正确方法,如C:\无权限


0
投票

使用此代码行:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\Yourfile.db"

我可以说这是在未经C许可的情况下创建数据库的正确方法,如C:\

© www.soinside.com 2019 - 2024. All rights reserved.