2

我使用 VB 在 Visual Studio 中开发了一个连接到 .db 数据库的程序。当我调试它时,它工作正常,因为我计算机上的数据库未设置为只读(我通过右键单击文件并转到属性进行检查)。

我使用标准的 Visual Studio 设置项目来构建它,并且设置项目中数据库的只读属性设置为 false。但是,当我构建项目并将其安装在另一台机器上时,数据库以某种方式设置为只读,并且出现错误“尝试编写只读数据库”

有人知道我将如何解决这个问题吗?谢谢

编辑:嗯,我刚刚检查过,数据库和其他程序文件添加到的文件夹被标记为“只读(仅适用于文件夹中的文件)”。因此,虽然数据库未标记为只读,但文件夹是。也许是因为它在程序文件文件夹中?

4

1 回答 1

3

出于安全原因,这些文件夹C:\PROGRAM FILESC:\PROGRAM FILES (x86)由操作系统(Vista 及更高版本)配置以阻止写入操作。
可以使用Environment.SpecialFolder枚举 的Environment.GetSpecialFolder参数调用用于写入应用程序范围数据(设置或数据库数据文件)的推荐文件夹。CommonApplicationData

Visual Studio 2010 中使用的标准设置工具没有直接指向此的预定义文件夹CommonApplicationData,但是您可以使用一种解决方法:

  • 右键单击文件系统,选择Add a Special Folder然后Custom folder
  • 为文件系统树中的新文件夹命名
  • 将属性设置DefaultLocation[CommonAppDataFolder]
  • 右键单击新添加的文件夹自定义文件夹,为您的应用程序创建一个子文件夹
  • 使用此文件夹添加您的数据库文件。

在此之后,不要忘记更改您的应用程序 ConnectionString 并将其指向文件的新位置。在 C# 中你写这样的东西

string commonData = ENvironment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string pathToDBFile = Path.Combine(commonData, "MyAppDir", "MyDB.sqlite");
于 2013-05-18T18:58:44.183 回答