PRB: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 引擎。 
 
参考资料 : http://www.5h6.com/article/28032.html
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值