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

时间:2015-06-26 03:36:36

标签: java database sqlite

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

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

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

任何人都可以帮我解决这个问题吗?提前谢谢。

4 个答案:

答案 0 :(得分:3)

检查这个

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

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

答案 1 :(得分:0)

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

您可以从

获取ROAMING目录
String path = System.getenv("APPDATA");

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

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

您可以在路径上形成sqlite,如

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

答案 2 :(得分:0)

使用此代码行:

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

我可以说这是未经许可将DB装入C:\

的正确方法

答案 3 :(得分:0)

使用此代码行:

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

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