有几个主要的错误原因:

这个错误发生在当你的程序试图执行更新数据库或其它类似操作时。这是因为

ADO由于以下的几个原因而不能够写数据库造成的。

1。最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限。

要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限。

当使用ACCESS数据库时,不仅要给文件写的权限,还要给该目录写的权限,因为

Jet需要在该目录建立一个.ldb文件。

2。第二个原因是数据库没有使用正确的模式打开。应该使用下面的方法打开。

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。你是在同时更新两个表中的字段,也会出现这个错误信息,解决办法是分开来更新

这两个表中各自字段。

5。当你使用了一个从低版本中(如ACCESS2.0,ACCESS7.0)载入到高版本(ACCESS 2000)

中的查询时,在执行这个查询是会出现该错误。

---------------------------------------------

下面是另外一篇讲此问题的,内容相似,放在一起了:

这里是微软官方站点对此的解释,通常来说,这个是一个权限问题。

http://support.microsoft.com/support/kb/articles/Q175/1/68.ASP

特征:

下面是使用ADO和ASP遇到这个情况的一种错误代码。

Microsoft OLE DB Provider for ODBC Drivers error ' 80004005'

[Microsoft][ODBC Microsoft Access 97 Driver] 操作必须是一个可更新的查询

原因:

本篇文章描述了三个该错误发生的主要原因以及错误产生区域。尽管这儿引用的是ACCESS数据库,但是对其他类型的数据库也同样适用。

解决办法

这个错误通常是在你对数据库内容做更新或者在试图改变数据库内容的时候产生的,这个错误的发生是因为您的ADO操作由于以下的某个原因而导致写入失败:

1、最普遍的原因是您的INTERNET来宾帐号(Iuser_machine)没有写入数据库(ACCESS)的权限,您可以在浏览器安全设置里给该帐号设置正确的权限。注意:当使用ACCESS和ADO的时候,也必须给该帐号以写目录的权限,也就是存放该MDB文件的地方,这个是因为数据库引擎会建立一个.LDB文件来出路数据库的锁定操作。你同时也应该给INTERNET临时文件夹设置读写权限,因为数据库引擎有可能会在该目录里面建立相关临时文件。

2、第二个原因是数据库的打开方式不对,比如打开方式是不可写的,也会导致该错误,当您使用CONNECTION对象的时候,您可以使用如下代码:

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

注意,默认的模式是0,一般说来,该模式是允许更新操作的

3、另外一个原因是你有可能在ODBC管理器里把相应的DNS设置里让READ ONLY选项给选中了

4、最后一个原因(FOR SQL),您的操作可能违反了数据库参照完整性,下面是一些普遍的导致该错误的操作:

比如您在试图改变一些不能改变的部件:比如交叉表、SQL PASS-THROUGH,连接,或者UPDATE操作一些已经设置为唯一的选项,比如一个自动编号的ID等等。

还有一个普遍的原因是你的JOIN操作包含了没有唯一索引的关联表,在这种情况下,SQL无法保证您要试图更新的表里的数据是唯一的。

任何一种原因都可能发生在很多情况下面,当您试图去更新一和一对多的联合,也会发生这个错误,除非允许层叠更新,请注意实施数据参照完整性

操作必须使用一个可更新的查询 解决办法

出错举例:

Microsoft JET Database Engine (0x80004005)
操作必须使用一个可更新的查询
/LeadBBS/inc/Board_Popfun.asp, 第 569 行

需要权限:服务器管理员,否则联系服务器管理员进行
示例操作系统:Windows 2000 Server

1.找到你存放网站的文件夹,比如你的网站存放在D:/WEB/News.com
右键点击文件夹,选择属性


点击小图查看大图

2.出来新窗口,选择安全,点击按钮添加(D)


点击小图查看大图
3.在出来的窗口中,找到IUSER_开头的名称,并双击,点击确定.


点击小图查看大图
4.确定后的结果是这个窗口,在安全的名称列表中多了刚才选择的用户
点击下面的按钮 高级(V)...


点击小图查看大图
5.在弹出的新小窗口中,继续点击 查看/编辑(V) 按钮


点击小图查看大图
6.出来新窗口..


点击小图查看大图
7.重新选择权限分配.


点击小图查看大图
8.点击应用完成设置

在做网页计数器的时候发现的问题,无论是用文件来记录访问次数还是用数据库来记录都是提示“操作必须使用一个可更新的查询”的错误。看网上的回答都说是“访问权限”的问题。

一般来说,这个问题会发生在磁盘格式为NTFS的情况下,由于这个格式加入了安全性的控制,但是在XP的系统下文件夹的被默认为“默认共享”,在“属性”选项卡里是找不到“安全性”这项的。因此应该更改这项设置。方法叙述如下:

打开任意一个文件目录,点击“工具”->“文件夹选项”->“查看”,找到“使用简单文件共享(推荐)”这项,把前面的勾去掉。

在网站所在文件夹上单击右键,选择“属性”,这时就能找到“安全”的选项卡,添加一个用户Everyone,权限设为“完全控制”,这样任何人都对你的网站目录有读写权限了,问题得以解决。

asp中 打开网页时出现“操作必须使用一个可更新的查询”原因及解决办法相关推荐

  1. Microsoft OLE DB Provider for ODBC Drivers (0x80004005) 操作必须使用一个可更新的查询”错误的解决办法

    1.在asp操作数据库时出现"操作必须使用一个可更新的查询"错误: 2.文件夹--〉属性:或,资源管理器--〉工具--〉文件夹选项 3.在"查看"选项卡中不钩选 ...

  2. Access中操作必须使用一个可更新的查询错误的解决办法

    错误信息: Microsoft OLE DB Provider for ODBC Drivers error ''80004005'' [Microsoft][ODBC Microsoft Acces ...

  3. Access数据库:它已经被别的用户以独占方式打开,操作必须使用一个可更新的查询,不能锁定文件

    转自:http://iasp.bokee.com/  笔名:iasp 由于网络开发过程,或者一些下载的例子工程一般都用Access数据库,因为它方便不需要服务器,以文件方式就可以访问. Access数 ...

  4. 操作必须使用一个可更新的查询问题

    碰到两次了:一次是服务器的路径变了.这次是权限变了. "/"应用程序中的服务器错误. ----------------------------------------------- ...

  5. 在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)

    现象:在Chrome中打开网页时出现以下问题 您的连接不是私密连接 攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码.通讯内容或信用卡信息). 当点开"了解详情"后显示 ...

  6. ASP.Net下如何解决关于Access数据库“操作必须使用一个可更新的查询”问题

    当我们在开发环境下Access数据库中记录的更新,删除,新建都没问题.但是将网站在实际中运行时会出现"操作必须使用一个可更新的查询"这样问题.其实这是文件访问权限的问题.尤其文件系 ...

  7. ACCESS数据库操作必须使用一个可更新的查询 解决办法

    ACCESS数据库操作必须使用一个可更新的查询 解决办法 ACCESS数据库无法更新问题: 一般在Winxp与windows 2003 server下,文件目录的只读属性会影响网站程序写数据库操作,即 ...

  8. 今日问题:操作必须使用一个可更新的查询。

    今天用asp.net 2.0写access数据库的时候出现了一个问题:操作必须使用一个可更新的查询. 我的机器是win2003,数据库文件存放在app_data文件夹中. 查找了一下原因,原来用户在请 ...

  9. Access update语句 提示 操作必须使用一个可更新的查询Access update语句 提示 操作必须使用一个可更新的查询

    <script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.cr ...

  10. '操作必须使用一个可更新的查询'解决方法

    原文:'操作必须使用一个可更新的查询'解决方法 当我们用ASP执行修改数据库记录操作时常会遇到以下问题 错误类型: Microsoft OLE DB Provider for ODBC Drivers ...

最新文章

  1. python pip全称_Python pip 安装与使用
  2. 转:实例学习PHP程序对用户身份认证实现两种方法
  3. axure怎么做5秒倒计时_罗胖60秒:怎么做一个课程?
  4. transition属性定义动画
  5. Linux操作系统的诞生及主要特性
  6. 在线云客服管理系统、会话管理、访客管理、客户管理、工单管理、会话记录、考勤统计、数据报表、工单设置、全局设置、转人工服务、自动回复、客户标签、客服监控、客服系统、前端会话、客服管理、在线客服、人工客服
  7. 创建的Maven Web工程无法部署到服务器及web-app_2_3.dtd规范
  8. Java 通过JDBC连接Mysql数据库
  9. 安装skimage库(ModuleNotFoundError: No module named 'skimage')
  10. 惠新宸:我也曾经是“不适合”编程的人(图灵访谈)
  11. python爬取金庸小说全集
  12. 简易记事本android代码,Android实现简易记事本
  13. 触发器的三种触发方式:电平触发、边沿触发、脉冲触发区别
  14. CasADi——数据类型详解与基本操作介绍
  15. java根据经纬度获取详细地址
  16. php phpunit selenium,PHPUnit和Selenium
  17. 【工作记录】网易云信最近联系人中加入本地服务端数据
  18. Involution:空间不共享?可完全替代卷积的高性能算子 | CVPR 2021
  19. PostgreSQL: Money与lc_monetary
  20. 浅谈DelayQueue

热门文章

  1. python详解绘制风玫瑰图
  2. r型聚类分析怎么做_聚类分析原理及R语言实现过程
  3. python 游戏屏蔽了模拟键盘_单机游戏下载:专业模拟飞行11 专业飞行模拟11 v11.41r1|容量62GB|官方简体中文|支持键盘.鼠标...
  4. 计量经济学笔记2---最大似然估计
  5. 性能碾压Notepad++的文本编辑器UltraEdit,程序员必备
  6. AD转换器输入之前接一个电压跟随器是为什么
  7. 《计算机网络教程》(微课版 第五版)复习补充题
  8. python音频分析(一)绘制wav的时域频域图
  9. android虚拟pdf打印机,pdf虚拟打印机(PDF-XChange Lite Printer)
  10. 常用中文字体的Unicode编码