| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 841 人关注过本帖
标题:关于recordset记录集问题
只看楼主 加入收藏
melon
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-10-26
收藏
 问题点数:0 回复次数:7 
关于recordset记录集问题
建立set rs=server.createobject("adodb.recordset")记录集后,是不是调用完数据后一定要关闭(rs.close)?
如果不关闭会造成什么后果吗?
如果不建立记录集,直接使用下面语句:
Set Rs=conn.Execute("select * from book")
这样也要关闭记录集吗?

当我在使用Set Rs=conn.Execute("insert into ...")来插入数据时,如果后面有rs.close语句,系统总是提示“记录集已关闭,不能进行插入操作”

大家说下吧,,我刚来的。谢谢
搜索更多相关主题的帖子: recordset 记录 
2005-10-27 20:56
tang688
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1219
专家分:35
注 册:2004-12-25
收藏
得分:0 
老版本的IIS如果不关闭,当一个用户进开打开过一个记录集后,在内存中就会占用一块空间,并且在用户退出后也会保留一定的时间。这样当用户访问到一定程序时,服务器就会因为内存耗内而瘫痪。
现在升级过的版本这个问题都已经解决了,所以关不关闭关系不是很大,只是如果你用了关闭,同这个程序和同这个用户,占用内存的时间会少一点。
第二名语句的意思也是打开一个记录集,它的愿意是这样的:执行()中的SQL语句,而你的SQL语句的意思是打开一个记录集。
但第三句也是执行()中的语句,但语句中的意思是写一条记录。
一般不这样写的,只写conn.Execute("insert into ...")就可以了。

2005-10-27 21:07
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
首先无论什么方式创建的记录集最好用完了关闭,这样做的好处是节省运行时的资源。还有一个后果就是,如果记录集的打开方式是共享的方式,不关闭顶多是占用服务器的系统资源。如果记录集是独占的打开方式,后果就会造成其他记录集在操作同样的表或数据库时就会产生读写冲突导致错误。一般Set Rs=conn.Execute("insert into ...")中的SQL语句只有用select * from…才会返回并创建记录集对象Set Rs=conn.Execute("select * from book")也就是说这么写当rs.close时是正确的,如果Set Rs=conn.Execute("insert into ...")因为"insert into ……"是插入的SQL数据操作语句,所以不会返回任何结果,所以Rs对象不会被创建。而rs.close时rs对象没有被创建当然会错误一般"insert into ..."或者"Delete ..."或Update的SQL语句是不返回任何结果的所以直接conn.Execute("insert into ...")就不需要Set rs=conn.Execute("insert into ...")。
2005-10-27 21:13
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
一般SQL语句中的insert,delet,update等数据操作语句不会返回任何结果,所以conn.Execute执行这些SQL语句是不会创建rs记录集对象的。

而select等数据查询语句是会返回查询到的结果,所以conn.Execute执行后会返回rs对象以接收查询到的结果。
2005-10-27 21:17
melon
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-10-26
收藏
得分:0 
谢谢谢谢谢谢谢谢谢谢谢谢!
2005-10-27 21:40
melon
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-10-26
收藏
得分:0 
对了,,还有个问题,
关闭记录集后,,还要不要这句啊?
rs=nothing
这句又有什么用啊?
2005-10-27 21:46
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
以下是引用melon在2005-10-27 21:46:00的发言: 对了,,还有个问题, 关闭记录集后,,还要不要这句啊? rs=nothing 这句又有什么用啊?
关闭只是说rs对象不再操作数据库了,而在内存中还存在并没有被彻底在内存中清空。用Set rs=Nothing的作用就是在内存中把rs对象彻底的清空掉。
2005-10-27 21:48
melon
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-10-26
收藏
得分:0 
这是我见过最好的论坛,,问题提出来后,,无论难度高低,,很快就有大哥解答了!爽
谢谢兄弟们了~
2005-10-27 21:52
快速回复:关于recordset记录集问题
数据加载中...
 
   



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

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