NextRecordset 和 GetRows 双簧合奏~~

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 "<table>"
For i=0 to rowsA
response.write "<tr>
response.write "<td>"&arrA(i,0)&"</td>" 'tableA.Ca1
response.write "<td>"&arrA(i,1)&"</td>" 'tableA.Ca2
response.write "<td>"&arrA(i,2)&"</td>" 'tableA.Ca3
response.write "<td>"&arrA(i,3)&"</td>" 'tableA.Ca4
response.write "</tr>"
Next
response.write "</table>

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

'--------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

时间: 2024-08-31 14:26:19

NextRecordset 和 GetRows 双簧合奏~~的相关文章

NextRecordset 和 GetRows 双簧合奏_应用技巧

NextRecordset 和 GetRows 大家可能用的很少! 最近使用使用,不错的好东东! 对提高批量查询,查询纪录集不是巨海量的情况很有效果 NextRecordset 和 GetRows 是Recordset的两个属性(属性还是方法我是常混淆是非#$#$,弄不清四下五除一) GetRows ---> 将recordset记录集提取到一个二维数组中,我们对recordset数据的行为就转移到该数组,可以早早的断开纪录集,不用再使用元数据操作,rs.movnext, while not r

ASP的NextRecordset和GetRows方法

NextRecordset和GetRows是RecordSet的两个属性对提高批量查询速度很有效果,大家可能用的很少,分享一下这两个方法的用法: GetRows方法:将RecordSet记录集提取到一个二维数组中,我们对RecordSet数据的行为就转移到该数组,可以早早的断开纪录集,不用再使用源数据操作,rs.movnext, while not rs.eof等可以省掉. NextRecordset方法:一次提交多个查询,形成多个RecordSet结果集的情况下,提供一个离开当前工作的Reco

网页播放技术的双簧演绎

网页 多朋友将音乐文件改编成 Flash 动画,满足了自己自由发挥和想象创造的成就感.但是 Flash 文件需要 Flash 专用播放器来播放,那么在网页上如何实现 Flash 媒体文件的播放呢?当然可以象 WMP 及 Real 一样引用 Flash 播放器控件代码来加以实现,但是一个网页在引用了 WMP 和Real 播放器控件的情况下,又再引用 Flash 播放器控件,那将是非常的占用系统资源和影响电脑运行速度的,甚至造成死机.为此,谱乐探索出了一种 WMP 在网页上实现播放 Flash 媒体

在JS中使用RecordSet对象的GetRows方法

js|对象 写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript.但在用JScript作为ASP的语言时,比用VBScript有一些小小的不方便,比如RecordSet的GetRows方法. 在ASP中操作数据库,一般都要用到RecordSet对象,如果注重程序效率的话,可能就会用到RecordSet对象的GetRows方法,把记录集对象转换成数组,而操作数组在速度上将比用RecordSet对象的MoveNext方法快很多,而且可以在取出数组后尽早释

RS.GETROWS使用详解

详解 ADO也提供更有效率方法來取得資料.GetRows 方法傳回一個二維的陣列變數,每一行對應Recordset中的一筆記錄,且每一列對應到記錄中的欄位.此方法的語法如下: varArray = rs.GetRows([Rows], [Start], [Fields]) Rows 是要讀取記錄的數量:如果想要取得Recordset所有記錄,可用-1或省略此參數.Start 是指出第一個被讀取記錄的書籤:也可以是下列列舉常數中的一個:0-adBookmarkCurrent(目前記錄).1-adB

ASP中GetRows的用法详解!

详解 大家应该都知道 Recordset 有个 GetRows 属性,但是真正使用的不多,我也是最近才用的!汗-- 其实这个属性很简单,就是把数据集输出到一个数组中.但是实用性可不小,在这里我举一个例子说明一下GetRows的使用方法,大家举一反三能想到更多的用法! 比如一个分类的表 T_Cate,结构和数据如下: ID   |   Title   |  Intro-----------------------------------------1    |   新闻   |  这里是新闻2  

让我们把RS.GetRows看得更清楚

用过Rs.GetRow的兄弟都知道Rs.GetRow可以更有效率地获取小容量数据(不适合大容量数据,尤其涉及大对象的时候,容易暴掉,我就爆过一次),PuterJam应用得不错的说. 但是Rs.GetRow返回的是一个二维数组,我们经常不知道哪段对哪段.这个很麻烦,于是编了一小段程序方便调试用:     Dim ds    Set objRS=objConn.Execute("SELECT * FROM [blog_Upload] WHERE ([ul_Quote] LIKE '%" &

ASP在JScript中使用RecordSet对象的GetRows方法

js|jscript|对象 写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript.但在用JScript作为ASP的语言时,比用VBScript有一些小小的不方便,比如RecordSet的GetRows方法. 在ASP中操作数据库,一般都要用到RecordSet对象,如果注重程序效率的话,可能就会用到RecordSet对象的GetRows方法,把记录集对象转换成数组,而操作数组在速度上将比用RecordSet对象的MoveNext方法快很多,而且可以在

实例讲解ASP读取Recordset中的GetRows 属性

大家应该都知道 Recordset 有个 GetRows 属性,但是真正使用的不多,我也是最近才用的!汗-- 其实这个属性很简单,就是把数据集输出到一个数组中.但是实用性可不小,在这里我举一个例子说明一下GetRows的使用方法,大家举一反三能想到更多的用法! 比如一个分类的表 T_Cate,结构和数据如下: ID   |   Title   |  Intro-----------------------------------------1    |   新闻   |  这里是新闻2    |