部署后“操作必须使用可更新查询”

Posted

技术标签:

【中文标题】部署后“操作必须使用可更新查询”【英文标题】:"operation must use an updateable query" after deployment 【发布时间】:2013-04-13 15:44:18 【问题描述】:

我用 C# (WPF) 创建了一个带有 Access 2010 数据库的桌面应用程序,我还为它创建了安装程序。我的问题是,当我将它安装在我的 PC 上时,它工作正常,但是当我将它安装在其他 PC 上时,它会失败并出现类似

的异常

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

我已经搜索过它,我发现的每个答案都表明这是一个权限问题。我已尝试授予对数据库文件夹的完全访问权限,但仍然出现相同的错误,过去两天我已尝试解决该问题,但仍未找到解决方案。

【问题讨论】:

您的安装程序是否也分发数据库文件?如果是这样,是否将数据库文件与可执行文件放在同一文件夹中? ...像C:\Program Files\yourApp这样的地方? 是的,我的数据库文件与其他可执行文件位于同一文件夹中。供您参考,我在提到的链接中上传了我的 exe 文件 是的,我的数据库文件与其他可执行文件位于同一文件夹中。供您参考,我已在提到的链接4shared.com/file/EDzIi7T9/DailyExpense.html 中上传我的 exe 文件 您是否尝试过以管理员身份运行您的应用程序? 如果在运行查询时发生此异常,该查询中的表是否有主键?我之前在没有主键的表上运行更新查询时遇到过这个错误 【参考方案1】:

如果您的安装程序将数据库文件与可执行文件放在同一文件夹中,例如C:\Program Files\myApp\,那么普通用户将只能对数据库进行只读访问:

即使您的安装程序修改了对数据库文件的权限,普通用户仍然对数据库具有只读访问权限,因为他们对文件夹具有只读访问权限>...

...而且您绝对不想对该文件夹打开对常规Users 的读写访问权限。 (有关文件/文件夹权限对 Jet/ACE 数据库的影响的详细信息,请参阅我的回答 here。)

相反,您的安装程序应该将数据库文件放入普通用户通常具有读写权限的文件夹中,可能在%PUBLIC% 下的某个位置。

【讨论】:

感谢您的回复,但我对此表示怀疑,因为我已经授予了所有权限,即使我将其安装在我的其他驱动器(如 D 驱动器)上,也会发生同样的异常。

以上是关于部署后“操作必须使用可更新查询”的主要内容,如果未能解决你的问题,请参考以下文章

更新行给出错误操作必须使用可更新查询

Access 2016 - 简单更新查询给出“操作必须使用可更新查询”错误

操作必须使用可更新查询/SQL - VBA

Paradox 插入数据操作必须使用可更新查询

使用 MS Access 更新表:操作必须使用可更新查询

Excel 数据到 Access DB - 获取:操作必须使用可更新查询错误