我使用NetBeans和SQLite数据库创建了一个软件。当我清理和构建时,可执行jar文件和数据库工作正常。它可以从数据库中读取和写入数据。
然后我使用" install creator"创建.exe文件。安装软件后,在我的Windows PC上的程序文件中创建相同的dist文件夹。当我从该dist文件夹运行可执行jar文件时,它只能读取数据库,但无法写入。我收到此消息
java.sql.SQLException:尝试编写只读数据库
任何人都可以帮我解决这个问题吗?提前谢谢。
答案 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:\,未经许可