【问题标题】:Access DB: Operation must use an updateable queryAccess DB:操作必须使用可更新的查询
【发布时间】: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 中当前打开了此表或数据库。看起来不是锁定文件的程序,可能是其他人打开文件造成的。

标签: c# visual-studio-2010 ms-access oledb


【解决方案1】:

用户帐户必须能够写入文件及其所在的文件夹;它应该能够创建和删除文件夹中的文件。 laccdb 文件的存在并不一定意味着访问已锁定数据库。它的存在可能是多种情况的结果,其中一种可能是用户帐户无权从文件夹中删除文件。

【讨论】:

  • 我知道。但现在它正在工作。我拼命地完全访问了所有内容,访问文件夹,上面的文件夹,访问文件,锁定文件和网站文件夹。现在问题似乎已经解决了。谢谢
【解决方案2】:

这个问题的解决方法很简单。只需以管理员身份运行该应用程序。我试了 3 次,效果很好

【讨论】:

  • 这是真的,所以 +1,但我会注意到这个简单的解决方案有效,因为默认情况下管理员权限允许创建和删除文件。然而,以管理员身份运行应用程序与最佳实践背道而驰,因此一些 IT 部门不会对这种简单的方法感到满意;因此,了解目录权限角度会很有帮助。
【解决方案3】:

另外,请确保该文件不是只读的。

【讨论】:

    猜你喜欢
    • 2010-10-03
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2013-11-16
    相关资源
    最近更新 更多