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

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

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

我使用标准的 Visual Studio 设置项目来构建它,并且设置项目中数据库的只读属性设置为 false。 但是,当我构建项目并将其安装在另一台计算机上时,数据库不知何故被设置为只读,并且出现错误“尝试写入只读数据库”

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

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

最佳答案

出于安全原因,文件夹 C:\PROGRAM FILESC:\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/

相关文章:

database - 如果控制台程序终止,程序中使用的数据库连接是否仍保持打开状态?

visual-studio - 如何在 VS2010 中创建新的项目类型?

java - 在 Java 中连接到 Oracle DB 返回 NullPointerException

.net - VS2010 Workflow Designer 可以自动排列布局吗?

c# - 使用 HTTP Post 发送大数据时出错

visual-studio-2010 - Visual Studio 2010 警告编号。我在哪里可以找到它们?

c++ - 禁用 Visual Studio 绿色箭头按钮移动指令指针

c# - 在 Visual Studio 中的方法的返回行上检查函数的返回值

php - 触发单个查询来获取网格分页的记录

php - 在 PHP 中为空数据库查询生成错误消息