我想到了两件事。
1.) 保留关键字
如果您使用某些关键字作为表名或列名,您可能会遇到无法真正告诉您实际原因的神秘异常。
你的专栏ID
在我看来很可疑。
一个简短的互联网搜索并没有为这个理论提供证据,但我相信我记得我在某处看到 ID 作为 MS Access 中的保留字。你可以尝试
2.)这篇文章看起来可能会有所帮助:解决操作必须使用可更新查询错误
在多用户环境中部署 Jet 4.0 数据库(由“Access”mdb 文件表示的实际数据库类型)时,只要打开数据库,就会创建一个 .ldb 文件。.ldb 文件包含详细信息,包括谁打开了文件,主要用于防止打开的记录被其他用户写入。
在 ASP.NET 应用程序的上下文中,“用户”是谁将取决于平台:对于 XP Pro 机器,用户是 ASPNET 帐户。在 Windows Server 2003、2008 和 Vista 上,它是 NETWORK SERVICE 帐户。但是,如果您启用了 ASP.NET 模拟,则默认用户帐户将是 IUSR_machinename 或您应用的任何帐户。如果您不确定您的 ASP.NET 应用程序在哪个帐户下运行,Environment.UserName 将返回它。为了能够创建、写入和删除所需的 .ldb 文件,相关用户需要 .mdb 文件所在文件夹的 MODIFY 权限。
要设置此权限,请右键单击 App_Data 文件夹(或您放置 mdb 文件的任何其他文件夹)并选择属性。查找安全选项卡。如果看不到它,则需要转到我的电脑,然后单击工具并选择文件夹选项...。然后单击查看选项卡。滚动到底部并取消选中“使用简单文件共享(推荐)”。返回“安全”选项卡,您需要将相关帐户添加到“组或用户名”框中。单击添加...,然后单击高级,然后单击立即查找。应列出适当的帐户。双击它以将其添加到组或用户名框中,然后检查权限中的修改选项。就是这样。你完成了。
注意:此修复还将解决“Microsoft Jet 数据库引擎无法打开文件'(未知)'。它已被其他用户以独占方式打开,或者您需要权限才能查看其数据”错误。