我在 Visual Studio 中使用 VB 开发了一个连接到 .db 数据库的程序。 当我调试它时,它工作正常,因为我计算机上的数据库没有设置为只读(我通过右键单击文件并转到属性来检查)。
我使用标准的 Visual Studio 设置项目来构建它,并且设置项目中数据库的只读属性设置为 false。 但是,当我构建项目并将其安装在另一台计算机上时,数据库不知何故被设置为只读,并且出现错误“尝试写入只读数据库”
有人知道我该如何解决这个问题吗? 谢谢
编辑:嗯,我刚刚检查过,添加数据库和其他程序文件的文件夹被标记为“只读(仅适用于该文件夹中的文件)”。因此,虽然数据库未标记为只读,但文件夹却标记为只读。也许是因为它位于程序文件夹中?
最佳答案
出于安全原因,文件夹 C:\PROGRAM FILES
或 C:\PROGRAM FILES (x86)
由操作系统(Vista 及更高版本)配置,以阻止写操作。
可以使用 Environment.SpecialFolder 的参数 CommonApplicationData
调用 Environment.GetSpecialFolder
来检索用于写入应用程序范围数据(设置或数据库数据文件)的推荐文件夹。枚举。
Visual Studio 2010 中使用的标准安装工具没有直接指向此 CommonApplicationData
的预定义文件夹,但是您可以使用解决方法:
- 右键单击文件系统,选择
添加特殊文件夹
,然后 然后自定义文件夹
- 为文件系统树中的新文件夹命名
- 将属性
DefaultLocation
设置为[CommonAppDataFolder]
- 右键单击新文件夹,为您的应用程序创建一个子文件夹 添加文件夹自定义文件夹
- 使用此文件夹添加数据库文件。
此后,不要忘记更改应用程序 ConnectionString 并将其指向文件的新位置。在 C# 中你可以写这样的东西
string commonData = ENvironment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string pathToDBFile = Path.Combine(commonData, "MyAppDir", "MyDB.sqlite");
关于database - 构建我的项目将数据库设置为只读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16627484/