问:Rs.open和Rs.execute() 有什么不一样(RS为RECORDSET 对象)?在有些页面用set Rs=conn.execute() 不能用,有些Rs.open不能用
问:
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 像黑布下换胶卷~~~偷偷摸摸~~非常单一!!!