安大互联
财经热点 > Asp编程 > ASP 返回-Operation Must Use an Updateable Query-错误
ASP 返回-Operation Must Use an Updateable Query-错误
浏览次数:【18】  发布日期:2009-8-13 12:09:22    文章分类:Asp编程   
专题:】 【
 

症状
当您将 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 引擎。

手机扫码浏览该文章
 ● 相关资讯专题
  • 网络建设业务咨询

   TEl:13626712526