莆仙生活网
当前位置: 莆仙生活网 > 知识库 >

操作必须使用一个可更新的查询

时间:2024-05-19 05:24:54 编辑:莆仙君

Java 连接access 数据库成功 能够读取数据 为什么插入数据总报错 但是打开

经多方查询,找到解决方案:在连接字符串后面加参数lockType=ACCESS。相关代码:Class.forName("com.hxtt.sql.access.AccessDriver");String strurl="jdbc:Access:///d:/mydata.accdb?lockType=ACCESS";Connection conn=DriverManager.getConnection(strurl);参看链接:网页链接

Z-blog未知错误ID:-2147467259操作必须使用一个可更新的查询的解决办法。 应该怎么解决呢?

解决方法:

出错提示:
操作必须使用一个可更新的查询。

win2k win2003 系统
问题应该是服务器数据库目录的写入权限没有设置好。
数据库目录 属性 安全 EVERYONE ……给他写入权限就OK了。


winXP系统
XP操作系统安装好,文件夹选项里面默认使用简单共享(推荐),把这个选项去掉,
再在文件夹上右键点击,就会出现安全这个选项卡,
原来默认的没有,然后在安全选项卡里面可以设置用户的写入权限了
右击数据库>安全>everyone>将需要的勾上或者给匿名用户帐号(IUSR_MACHINE)对该数据库文件的独写权限。
--------------------------------------------------------------
错误信息:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Operation must use an
updateable query.

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

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)中的查询时,在执行这个查询是会出现该错误。


什么是操作系统软件

系统软件

系统软件
系统软件是指控制和协调计算机及外部设备,支持应用的软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
系统软件主要包括:操作系统,语言处理程序,高级语言系统和各种服务性程序等.
其中:操作系统如我们常用的Windows,linux,Dos,unix等。
语言处理程序如汇编语言汇编器,C语言编译、连接器等,
一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。
是支持计算机系统正常运行并实现用户操作的那部分软件。
一般是在计算机系统购买时随机携带的,也可以根据需要另行安装。
系统软件的主要特征是:
与硬件有很强的交互性
能对资源共享进行调度管理
能解决并发操作处理中存在的协调问题
其中的数据结构复杂,外部接口多样化,便于用户反复使用.


[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。

你看下,你的access数据库文件是不是设置了只读,
这个错误明显是不能写入造成的。
如果没有设置只读,请看下所在分区格式,如果是NTFS格式,需要把access文件所在文件夹的读写修改权限给予"IUSR_机器名"这个帐号,方法是在该文件夹上右键,属性=》安全。
如果没有这个选项,先在我的电脑中 工具=》文件夹选项=》查看,然后把“使用简单文件共享”前边的勾去掉,然后确定。这样, 就能设置权限了。


[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。

二楼所指向的答案并非最佳
如同所说,
这个问题操作系统安全性的控制,理论性的原因就不多说了:
你可以
在网站数据库MDB上单击右键,选择“属性”,找到“安全”的选项卡,依次点"添加"-"高级"-"立即查找",找到一个以IUSR_开头的用户,
点"确定",(该用户为internet来宾帐户),在默认权限的基础上增加"写入"就可以了,
建议不要添加用户Everyone,更不要将权限设为“完全控制”,也不要针对整个网站,那样相当危险。
祝你好运!


Access里使用SQL时遇到“必须使用一个可更新的查询?”

想法很好,可惜ACCESS数据库Jet引擎比较弱,它支持用实际存在的字段来更新某个字段值,但是不支持用计算出来的字段来更新数据表。楼主的更新语句报错就是因此而产生的。如果不做实际更新,运行选择查询将会很方便,例如下列语句select a.* ,a.金额 + 32*a.金额/b.hj as 调整后 from 表1,(select sum(金额) as hj from 表1)b;或者运行生成表查询,生成一个含[调整后]字段的新表也很方便select a.* ,a.金额 + 32*a.金额/b.hj as 调整后 into 新表1 from 表1,(select sum(金额) as hj from 表1)b;如果一定要更新表1,那就比较麻烦了,要分三步不走1)为表1添加一个货币型字段[调整后]alter table 表1 add column 调整后 money;2)算出总金额保存到到一个新中间过渡表[hjb] ,实在没辙啊!select sum(金额) as hj into hjb from 表1;3)用hjb的hj字段取更新表1的[调整后]字段update 表1 a,hjb b set a.[调整后]=a.金额 + 32*a.金额/b.hj;没办法,受ACCESS的局限,更新的话只能这么麻烦了注意,因为要用总金额做除数,表一最少得有一笔金额数,否则会发生除以0的错误。

在ASP中如何设置上传后的新闻在前台显示时根据上传时间所显示的NEW图片?

你的问题是想在首页调用新闻列表时,将当天的新闻标记一个New图片,以便突出吗??

你的新闻发布后台是自己写的吗??一般写文章发布的系统都会记录下文章发布的时间(你可以看看你使用的系统带的数据库,通常是ACCESS,存放新闻的表里面应该有个CreateTime之类的时间类型的字段),如果是自己写的,那你要加上这个字段,并且在保存文章时,将当时的时间写入这个字段。

然后再按后面的处理就好了。
------------
在数据库中记录新闻上传的时间,读取数据库时按上传时间降序排列,判断上传日期与今天是否同一天,是的话写入一个img标记

if CDate(rs("createtime"))=CDate(Now) then Response.write("")


asp 修改 add内容...

这个标题加内容看的我感觉难度挺大的,如果能说的再清楚一些就好了。

您是想修改字段 add 的内容,对吧

'接收从页面提交的数据
id = clng(request("id"))
add = request("add")

'sql语句,修改字段add的内容
conn.execute("update [live] set [add]='" & replace(add,"'","''") & "' where id=" & id)