您的位置:首页精文荟萃软件资讯 → NextRecordset 和 GetRows 双簧合奏~~

NextRecordset 和 GetRows 双簧合奏~~

时间:2004/10/7 19:16:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            NextRecordset 和 GetRows 大家可能用的很少!
最近使用使用,不错的好东东!
对提高批量查询,查询纪录集不是巨海量的情况很有效果
NextRecordset 和 GetRows 是Recordset的两个属性(属性还是方法我是常混淆是非#$#$,弄不清四下五除一)

GetRows ---> 将recordset记录集提取到一个二维数组中,我们对recordset数据的行为就转移到该数组,可以早早的断开纪录集,不用再使用元数据操作,rs.movnext, while not rs.eof等可以省掉

NextRecordset ----> 就是在一次提交多个查询,形成多个reordset结果集的情况下,提供一个离开当前工作的recordset,转移到第二个recordset的方法!
主要是用在多个SELECT形成的结果集的情况

示例如下:

dim SQL,Rs,arrA,arrB,rowsA,rowsB

'======提取数据库库记录====

(adodb.connection 的连接部分省略,假定CONN.open CONNstr)
SQL=" select Ca1,Ca2,Ca3,Ca4 from TableA " '---------------SELECTa
SQL=SQL&" select Cb1,Cb2,Cb3,Cb4,Cb5 from TableB " '-------------SELECTb

Set Rs=conn.execute(SQL)
'执行结果将有两个select 的结果集,当前第一个select的recordset处于激活状态

arrA=rs.GetRows '----------取得SElECTa Recordset的二维数组

set rs=rs.NextRecordset
'------------最关键的一步,使用Nextrecordset激活下一个recordset

arrB=rs.GetRows '----------再次取得第二个SElECTb Recordset的二维数组

Rs.close
set rs=nothing '---------尽早释放数据库对象,关闭记录集
CONN.close
set CONN=Nothing
这样,我们所有关于数据库的数据干干净净的提取完成,用最早的时间释放数据库资源
'-----------//

'========用取得的arrA arrB进行页面处理,显示数据结果======
'注意,arrA=GetRows 后得到的数组,第一维是代表列,第二维代表行

rowsA=ubound(arrA,2) '----提取arrA的第二维下标,相当于取得recordset 的记录行数
rowsB=ubound(arrB,2) '-----同上,提取arrB的第二维下标

'做数据循环:

'第一个select表的循环
response.write ""
For i=0 to rowsA
response.write "
response.write "" 'tableA.Ca1
response.write "" 'tableA.Ca2
response.write "" 'tableA.Ca3
response.write "" 'tableA.Ca4
response.write ""
Next
response.write "
"&arrA(i,0)&""&arrA(i,1)&""&arrA(i,2)&""&arrA(i,3)&"


'第二个select表循环
response.write ""
For i=0 to rowsB
response.write "
response.write "" 'tableB.Cb1
response.write "" 'tableB.Cb2
response.write "" 'tableB.Cb3
response.write "" 'tableB.Cb4
response.write "" 'tableB.Cb5
response.write ""
Next
response.write "
"&arrB(i,0)&""&arrB(i,1)&""&arrB(i,2)&""&arrB(i,3)&""&arrB(i,4)&"


'--------OVER

REM '============小结========

这样的结果,再清楚不过!
(1)使用Nextrecordset,可以处理多个select语句一次发送形成的结果集,减少网络流量,必定加快速度!
不使用NextRecordset 则会这样操作:
SQL="select Ca1,Ca2,Ca3, Ca4 From TableA "
set Rs=CONN.execute (SQL)
SQL=" select Cb1,Cb2,Cb3,Cb4,Cb5 from TableB "
Set Rs=CONN.execute (SQL)
(2)使用GetRows将记录集提取到数组中(放到内存,所以要求记录集不要海大啦)
用内存的数组工作,而且省掉EOF,movenext等的判断,谁更快!自不必说!
(3)最最主要的,我们利用上二者,一次性将所有的数据提完,快速断开数据库连接和摧毁建立recordset数据库对象,大大减少网络流量!性能自然要提高很多!

'-----------呵呵!及时原创,初浅晦色,见谅见谅~~~~~~~V37


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本