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 - 简单更新查询给出“操作必须使用可更新查询”错误

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

Access 中 SQL 链接表上的 UPDATE 查询的“操作必须使用可更新查询”

错误:“操作必须使用可更新的查询” - MS Access

操作必须使用可更新的查询。 (错误3073)Microsoft Access

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