Access DB:操作必须使用可更新的查询
Posted
技术标签:
【中文标题】Access DB:操作必须使用可更新的查询【英文标题】:Access DB: Operation must use an updateable query 【发布时间】:2012-12-06 17:54:29 【问题描述】:我正在运行 ISS 服务器,我有一个访问文件位于 C:\WCF\Access\ 我正在使用这个查询来插入一些东西:
@"INSERT INTO Arbejdsindsats (MedarYdelID, StartTid, SlutTid) VALUES ('" + medarYdelID + "', '" + startTid + "', '" + slutTid + "')";
完整代码为:
public String GemArbejdsIndsats(String medarYdelID, String startTid, String slutTid)
try
con.Open();
String command = @"INSERT INTO Arbejdsindsats (MedarYdelID, StartTid, SlutTid) VALUES ('" + medarYdelID + "', '" + startTid + "', '" + slutTid + "')";
cmd.CommandText = command;
cmd.ExecuteNonQuery();
con.Close();
return "success: medarydelid: " + medarYdelID + " startTid: " + startTid + " slutTid: " + slutTid;
catch(Exception e)
String k = e.Message;
return k;
问题是这个错误:
操作必须使用可更新的查询
当我在自己的机器上进行本地测试时,它工作正常。只是不在 IIS 中。
奇怪的是有一个laccdb 文件。它不会消失。也许数据库被锁定了,所以我不能更新它?
权限应该没问题:
img http://img.ctrlv.in/50c0dbf8670d8.jpg
【问题讨论】:
插入完成后是否关闭连接? 是的,我愿意。该代码在本地工作。 你能出示你的代码吗?IUSR
账户对accdb和laccdb文件以及它们所在的文件夹有什么权限?
这听起来很愚蠢,但是您是否在系统上的 MS Access 中当前打开了此表或数据库。看起来不是锁定文件的程序,可能是其他人打开文件造成的。
【参考方案1】:
用户帐户必须能够写入文件及其所在的文件夹;它应该能够创建和删除文件夹中的文件。 laccdb 文件的存在并不一定意味着访问已锁定数据库。它的存在可能是多种情况的结果,其中一种可能是用户帐户无权从文件夹中删除文件。
【讨论】:
我知道。但现在它正在工作。我拼命地完全访问了所有内容,访问文件夹,上面的文件夹,访问文件,锁定文件和网站文件夹。现在问题似乎已经解决了。谢谢【参考方案2】:这个问题的解决方法很简单。只需以管理员身份运行该应用程序。我试了 3 次,效果很好
【讨论】:
这是真的,所以 +1,但我会注意到这个简单的解决方案有效,因为默认情况下管理员权限允许创建和删除文件。然而,以管理员身份运行应用程序与最佳实践背道而驰,因此一些 IT 部门不会对这种简单的方法感到满意;因此,了解目录权限角度会很有帮助。【参考方案3】:另外,请确保该文件不是只读的。
【讨论】:
以上是关于Access DB:操作必须使用可更新的查询的主要内容,如果未能解决你的问题,请参考以下文章
Access 2016 - 简单更新查询给出“操作必须使用可更新查询”错误
Access 中 SQL 链接表上的 UPDATE 查询的“操作必须使用可更新查询”