注册 登录
编程论坛 ASP技术论坛

一个update更新数据库的问题,好奇怪!

nicechlk 发布于 2008-10-13 10:41, 1969 次点击
看如下代码:
首先声明,数据库是用OLEDB通过数据源连接的。
<!--#include file="conn.asp"-->
<%
dim rs,big_value,big_id
big_value=request.querystring("big_value")
big_id=request.querystring("id")
set rs=server.CreateObject("adodb.recordset")
if big_value<>"" then
  conn.execute "update BigName_Tree set state='"&big_value&"' where id="&big_id
end if
%>
问题:这条语句不能写入数据库
但是,如果将conn.execute换成如下方式就可以,不知为何?
<%
.....
if big_value<>"" then
  rs.open "select * from BigName_Tree where id="&big_id,conn,1,3
  rs("state")=big_value
  rs.update
  rs.close
end if
%>
11 回复
#2
wxm1984272008-10-13 10:47
对啊,应该是先判断值,再新建记录集啊,你看你的那个是不是顺序错了,这个也是个过程化的啊,不是面向对象的!!!你说呢??还有,就是你上面的那个语句,没有SQL语句,也没有用RS。OPEN SQL,CONN,1,3   ,就是说你还没有打开数据库你怎么能写进去呢??

[[it] 本帖最后由 wxm198427 于 2008-10-13 10:49 编辑 [/it]]
#3
nicechlk2008-10-13 11:14
用conn.execute方法也需要rs.open打开数据库么?
#4
multiple19022008-10-13 12:51
当然不需要
#5
nicechlk2008-10-13 13:48
[bo][un]multiple1902[/un] 在 2008-10-13 12:51 的发言:[/bo]

当然不需要

可是,用conn.execute方法不能更新数据。

[[it] 本帖最后由 nicechlk 于 2008-10-13 17:33 编辑 [/it]]
#6
nicechlk2008-10-18 00:33
这个问题无解,看来。
#7
cslldu2008-10-18 11:45
看似出错没道理
#8
yms1232008-10-18 16:56
楼主用的什么数据库?
#9
hmhz2008-10-18 17:16
这个问题很简单,先给你说一下,数据库如果是SQL2000的话,用conn.execute是绝对没有问题的,如果数据库用的是ACCESS的话,数据库有两种连接方式,我在置顶贴里有说明

①直接连接数据库文件
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("database/yanhang.mdb")

②通过数据源来连接数据库文件
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("database/yanhang.mdb")

如果是第一种方式连接的数据库,就不能使用conn.execute执行语句
得使用下面的rs.open语句执行

如果连接数据库使用的是第二种方式的话
conn.execute和rs.open都能执行
#10
nicechlk2008-10-18 20:29
回答:
1、数据库是通过数据源来连接的。
2、数据库是access的。
3、反复查看代码没有发现什么问题。
4、就是不能更新数据库。
#11
awke0022008-10-20 10:07
值得关注、、、
#12
anlige2008-10-20 16:14
你可以换种数据源连接方式
用provider方式看看~
1