【问题标题】:My application cannot update Access database after deployment to "C:\Program Files\..."部署到“C:\Program Files\...”后,我的应用程序无法更新 Access 数据库
【发布时间】:2013-12-06 15:42:02
【问题描述】:

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

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

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

但它在visual studio下完美运行,像这样的图像(注意,一旦我点击提交按钮,上面图像上的错误就会出现,它应该存储在数据库中,并像图像一样显示在datagridview上下面):

我还有另一个问题,删除功能没有运行,一旦我部署我的程序就会出现添加和删除的错误,但我会在另一个线程上发布。

我该如何解决这个问题?

【问题讨论】:

  • 您的应用程序的用户对 db 文件及其所在文件夹有哪些 Windows 权限?
  • 先生,我该如何检查?
  • 在 Windows 资源管理器中,右键单击 db 文件并选择属性。然后检查属性对话框的安全选项卡。对包含 db 文件的文件夹执行相同操作。用户必须能够在该文件夹中创建或至少更新锁定文件才能以读写模式打开数据库。没有锁文件能力,她只能以只读方式打开数据库。
  • 文件夹包含数据库,其中的程序是只读的,但是当我取消选中它时,消息说它必须得到管理员的许可,当我点击继续时,没有任何变化.. 我怎么办解决这个大佬?是否可以在部署此系统之前处理代码?谢谢
  • 该程序在 D:Program Files 上完美运行,先生,而不是在 C:Program Files 或系统文件中。为什么会这样?

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


【解决方案1】:

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

但是,如果在部署时数据库文件保持“与代码一起”并且安装程序将文件(即可执行文件和数据库文件)放入目标机器上的%ProgramFiles%(例如,C:\Program Files\MyApplication)那么普通用户将没有对该位置的写入权限。 %ProgramFiles% 中的文件通常被限制为只读,以保护系统免受恶意软件的侵害。

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

【讨论】:

  • 感谢您的解释先生,但我不太明白接下来我应该做什么先生@Gord Thompson?
  • @Kaoru 我看到你提出了一个新问题,这很好。我们将继续在那里。
  • 如果我能再投票 50 次,我会的。我花了两个小时试图弄清楚为什么我无法将数据保存到数据库中,但我没有遇到连接错误。感谢上帝!
猜你喜欢
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多