构建我的项目将数据库设置为只读?

时间:2013-05-18 18:17:07

标签: database visual-studio-2010 visual-studio sqlite installation

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

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

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

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

1 个答案:

答案 0 :(得分: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");