问:
Rs.open和Rs.execute() 有什么不一样(RS为RECORDSET 对象)?在有些页面用set Rs=conn.execute() 不能用,有些Rs.open不能用
答:
第一个是可以有不同的打开游标 第二个只有一个向前的游标 而且你第二个写的好象不太正确应该是conn.execute,没有rs.execute的吧。
rexsp(真水无香 ppcode.com) : 不好意思,写错了,是set Rs=conn.execute() ,如果我的游标conn.cursorLocation=3,set Rs=conn.execute() 和Rs.open有什么不一样?
conn.execute 执行效率更高,尤其在insert into ,update等操作时!
两种打开方式有区别,就是前面说的游标问题。 一般情况下两种都互相换用,但有时候比如你需要取rs.recordcount的时候就只能用open来打开了。具体其他的差别我也不太清楚。我是一般用execute,在遇到问题时用open
通常 Set rs=CONN.execute(SQL) 或直接 rs=CONN.execute(SQL) 和 Set rs=Server.CreateObject("ADODB.Recordset") rs.open SQL,CONN,0,1 或 rs.open SQL,CONN 这种情况 通常open比上一个性能要好那么一丁点 使用 CONN.execute 可以不用关闭直接执行下一个 set rs=conn.execute(SQL) 但性能速度会大打折扣!! 大约要慢 2~5 倍!!(这是我在msSQL循环1000次亲自测试过的,不信你马上自己测试),所以执行下一个 rs=conn.execute之前!!一定要关闭掉!是个好习惯! 使用单一对象的rs rs.open在open下一个记录集之前,必须要求显示关闭,否则出错,速度在SQL,CONN,0,1的情况下可前者基本一样 所以我喜欢使用只设置一个 CreateObject("adodb.recordset")(在不需要多个记录集交错操作的情况下,多个也不碍事!) 然后从头用到尾!!! 开门关门开门关门~~~~~咵踏咵踏~~~~ 最后一个 set rs=nothing 化上句号,爽! 更主要是 open提供非常灵活的操作数据库元数据的非常多的属性!! 打开百宝箱,金光灿灿什么都看见! 有很多情况下是非得用open来做的! 而conn.execute 像黑布下换胶卷~~~偷偷摸摸~~非常单一!!!
|