标题:一个update更新数据库的问题,好奇怪!
只看楼主
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
结帖率:66.67%
 问题点数:0 回复次数:11 
一个update更新数据库的问题,好奇怪!
看如下代码:
首先声明,数据库是用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
%>
搜索更多相关主题的帖子: 数据库 update 
2008-10-13 10:41
wxm198427
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:561
专家分:25
注 册:2008-6-30
得分:0 
对啊,应该是先判断值,再新建记录集啊,你看你的那个是不是顺序错了,这个也是个过程化的啊,不是面向对象的!!!你说呢??还有,就是你上面的那个语句,没有SQL语句,也没有用RS。OPEN SQL,CONN,1,3   ,就是说你还没有打开数据库你怎么能写进去呢??

[[it] 本帖最后由 wxm198427 于 2008-10-13 10:49 编辑 [/it]]
2008-10-13 10:47
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
得分:0 
用conn.execute方法也需要rs.open打开数据库么?

莫以善小而不为,莫以恶小而为之!
2008-10-13 11:14
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
得分:0 
当然不需要
2008-10-13 12:51
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
得分:0 
[bo][un]multiple1902[/un] 在 2008-10-13 12:51 的发言:[/bo]

当然不需要

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

[[it] 本帖最后由 nicechlk 于 2008-10-13 17:33 编辑 [/it]]

莫以善小而不为,莫以恶小而为之!
2008-10-13 13:48
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
得分:0 
这个问题无解,看来。

莫以善小而不为,莫以恶小而为之!
2008-10-18 00:33
cslldu
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-4-12
得分:0 
看似出错没道理
2008-10-18 11:45
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
楼主用的什么数据库?
2008-10-18 16:56
hmhz
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:30
帖 子:1890
专家分:503
注 册:2006-12-17
得分:0 
这个问题很简单,先给你说一下,数据库如果是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都能执行

[编程论坛] ASP超级群:49158383  敲门暗号:ASP编程
龍艺博客 http://www.
2008-10-18 17:16
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
得分:0 
回答:
1、数据库是通过数据源来连接的。
2、数据库是access的。
3、反复查看代码没有发现什么问题。
4、就是不能更新数据库。

莫以善小而不为,莫以恶小而为之!
2008-10-18 20:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-237922-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.082815 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved