ASP 返回“Operation Must Use an Updateable Query”错误

错误

症状
当您将 ActiveX 数据对象 (ADO) 与 Active Server Pages (ASP) 一起使用时,可能会遇到以下常见错误:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an updateable query.

原因
本文阐述导致此错误的四种主要原因及相应的替代方法。尽管本文讨论的是 Microsoft Access 数据库,但此处提供的信息也适用于其他类型的数据库。

解决方案
当您的脚本试图执行更新或执行会更改数据库中的信息的其他某种操作时,通常会遇到此错误。出现此错误的原因是 ADO 由于以下某种原因而无法写入数据库:

1. 最常见的原因是 Internet 来宾帐户(IUSR_MACHINE,默认情况下该帐户属于“Everyone”组)对数据库文件 (.mdb) 没有写权限。要解决此问题,请使用 Explorer 中的“安全”选项卡来调整此文件的属性,以便 Internet 来宾帐户具有正确的权限。

注意:在将 Microsoft Access 数据库与 ADO 一起使用时,还必须授予 Internet 来宾帐户对包含 .mdb 文件的目录的写权限。这是因为 Jet 会创建一个用于处理数据库锁定的 .ldb 文件。由于 Jet 可能会在“Temp”目录中创建临时文件,因此您可能还需要授予对该文件夹的读/写权限。
2. 出现此错误的第二个原因是数据库不是使用具有写权限的正确模式打开的。如果您对 Connection 对象执行 Open 操作,则应使用 Mode 属性指示对该连接所拥有的权限,如下所示:
      SQL = "UPDATE Products Set UnitPrice = 2;"
            Set Conn = Server.CreateObject("ADODB.Connection")
            Conn.Mode = 3      '3 = adModeReadWrite
            Conn.Open "myDSN"
            Conn.Execute(SQL)
            Conn.Close
           
注意:默认情况下,MODE 设置为 0(adModeUnknown),该值通常允许更新。
3. 出现此错误的另一个原因是:在 ODBC 管理器中,DSN 的“选项”页中的“只读”设置可能被选中。
4. 最后一个问题和替代方法适用于所有 SQL 数据源。违反数据库的引用完整性的 SQL 语句可以导致出现此错误。下面是一些最常见的失败的查询:
• 其中最简单的一组查询是以下您无法更改的查询:UniqueValue 属性设置为 Yes 的交叉表查询、SQL 传递查询、联合查询或更新(即生成表)操作查询。

 
• 另一种非常常见的原因是联接包含的链接 ODBC 表的索引不是唯一的。在这种情况下,SQL 无法保证表中的记录是唯一,该表中字段的值将随查询发生更改。

 
• 有一种原因确实有可靠的替代方法。如果您尝试更新“一对多”查询的“一”方的联接字段,操作将会失败,除非您启用级联更新。因为这样您就可以将引用完整性委托给 JET 引擎。

时间: 2024-09-18 21:28:28

ASP 返回“Operation Must Use an Updateable Query”错误的相关文章

工作-VS2013 ASP.NET MVC 创建控制器的时候出现错误

问题描述 VS2013 ASP.NET MVC 创建控制器的时候出现错误 新手求解答,之前在另一台电脑上做这个工作的时候没有出现这种错误,望高手指教 解决方案 确保这个Model定义没有问题,重新编译下程序,如果编译有错误,贴出错误. 一般重新编译后再添加就可以了.

asp页面出现INSERT INTO 语句的语法错误。

问题描述 asp页面出现INSERT INTO 语句的语法错误. 解决方案 容易出现insert into语句的语法错误的原因asp.net总是报"INSERT INTO 语句的语法错误."insert into 语句总是出现 未指定错误 解决方案二: 检查下insert后面values 的数据就字符还是数据类型,可能是不匹配的问题

通过Dreamweaver用ASP设计注册登录系统出现未指定的错误,求高手解答

问题描述 通过Dreamweaver用ASP设计注册登录系统出现未指定的错误,求高手解答 本人初学Dreamweaver,小白一枚,用ASP设计注册登录系统,用的是本地/网络连接方式进行测试,在点击登录按钮后显示错误,错误为: Provider 错误 '80004005' 未指定的错误 /denglu.asp,行 9 求高手帮忙解答 解决方案 你把代码贴出来看看啊 解决方案二: 数据库连接有问题,你用的是什么版本的数据库,CONNECTSTRING是怎么写的? 另外检查数据库文件目录的访问权限.

login-请问IVS_SDK_Login登录失败返回错误码为119101305是什么错误

问题描述 请问IVS_SDK_Login登录失败返回错误码为119101305是什么错误 如题,网上华为sdk的相关资料都没找到对于函数错误码的解释. 解决方案 http://bbs.umeng.com/thread-4909-1-1.html

紧急求救:asp网站更换ip地址后浏览网页错误,无法访问!快救救我!

问题描述 紧急求救:asp网站更换ip地址后浏览网页错误,无法访问.....!快救救我 解决方案 解决方案二:补充问题,进入管理界面后网页全部变成快捷方式解决方案三:再详细些,目前已有的资料不足以明白你的问题所在解决方案四:是发布在公网上的网站吗?你说的快捷方式是指什么?解决方案五:网站发来看看就知道了解决方案六:域名重新解析没??LZ真实惜字如金啊!解决方案七:是不是数据库的连接字符串出问题了?解决方案八:他都说IP已经更新了呀.不过更新后哪有那么快就可以访问??更新后正常都在3个小时内生效,

asp返回404错误状态码程序

  404错误状态码是页面找不到时才返回的一个告诉搜索引擎此页面永久不存了,下面小编来给各位同学介绍一下404错误状态码在asp代码中如何实现吧. asp中设置404状态  代码如下   <%      Response.Status = "404 Not Found"   %> ASP.NET设置404页面 在404.aspx中加入代码:  代码如下   Response.Status = "404 Moved Permanently"; 在 Glob

ASP返回某年总共有多少天的代码_应用技巧

复制代码 代码如下: '返回某年总共有多少天 Function DayOfYear(ByVal y) DayOfYear = DatePart("y",y&"-12-31") End Function5 '例子:Response.Write DayOfYear(2012) Asp DatePart 函数的语法详解 DatePart(interval, date[, firstdayofweek[, firstweekofyear]]) DatePart 函数

asp 返回多个记录集的存储过程

返回多个记录集的存储进程 本文最先介绍的是返回记录集的存储进程.有时候,需要一个存储进程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在USERINFO表中增加两个字段:USERTEL及USERMAIL,并设定只有登录用户可以查看这两项内容. /*SP7*/ CREATE PROCEDURE DBO.GETUSERINFO @USERID INT, @CHECKLOGIN BIT AS SET NOCOUNT ON BEGIN IF @USERID IS NULL OR

ASP返回某年总共有多少天的代码

复制代码 代码如下: '返回某年总共有多少天 Function DayOfYear(ByVal y) DayOfYear = DatePart("y",y&"-12-31") End Function5 '例子:Response.Write DayOfYear(2012) Asp DatePart 函数的语法详解 DatePart(interval, date[, firstdayofweek[, firstweekofyear]]) DatePart 函数