部署到“C:\ Program Files \ ...”后,我的应用程序无法更新Access数据库

时间:2013-12-06 15:42:02

标签: c# visual-studio-2010 datagridview ms-access-2010 visual-studio-2013

我已将我的应用程序部署为准备供其他用户(另一台计算机)使用,但当我尝试将数据添加到数据库时,我收到错误

  

操作必须使用可更新的查询

错误是这样的(这是我已经部署了我的程序并在应用程序下运行,而不是在Visual Studio下运行):

enter image description here

但它在visual studio下完美运行,这样的图像(请注意,一旦我点击提交按钮,它就会出现在数据库中,并将其显示在datagridview上,就像图像一样下文):

enter image description here

而且我还有另一个问题,删除功能没有运行,添加和删除错误在我部署程序后出现,但我会在另一个帖子上发布。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

当Visual Studio应用程序正在开发中时,它驻留在开发人员具有读/写访问权限的文件夹中。这显然是必要的,因为开发人员需要能够编辑源代码文件。如果将数据库文件“放入代码”,则应用程序可以更新数据库文件,因为它位于“可写”位置。

但是,如果在部署时数据库文件保持“与代码”,并且安装程序将文件(即可执行文件和数据库文件)放入目标计算机上的%ProgramFiles%(例如,{{ 1}})然后普通用户将拥有该位置的写入权限。 C:\Program Files\MyApplication中的文件通常仅限于只读,以保护系统免受恶意软件的侵害。

有些人会尝试配置安装程序,以便为%ProgramFiles%下的某些文件或文件夹授予普通用户写入权限,但这是 Bad Idea™。安装程序应该将数据库文件真正复制到通常为目标用户读/写的位置:%ProgramFiles%(针对特定用户)或%USERPROFILE%(针对所有用户)。