NextRecordset和GetRows大家可能用的很少!
最近使用使用,不錯的好東東!
對提高批量查詢,查詢紀錄集不是巨海量的情況很有效果
NextRecordset和GetRows是Recordset的兩個屬性(屬性還是方法我是常混淆是非#$#$,弄不清四下五除一)
GetRows--->將recordset記錄集提取到一個二維數組中,我們對recordset數據的行為就轉移到該數組,可以早早的斷開紀錄集,不用再使用元數據操作,rs.movnext,whilenotrs.eof等可以省掉
NextRecordset---->就是在一次提交多個查詢,形成多個reordset結果集的情況下,提供一個離開當前工作的recordset,轉移到第二個recordset的方法!
主要是用在多個SELECT形成的結果集的情況
示例如下:
dimSQL,Rs,arrA,arrB,rowsA,rowsB
''======提取數據庫庫記錄====
(adodb.connection的連接部分省略,假定CONN.openCONNstr)
SQL="selectCa1,Ca2,Ca3,Ca4fromTableA"''---------------SELECTa
SQL=SQL&"selectCb1,Cb2,Cb3,Cb4,Cb5fromTableB"''-------------SELECTb
SetRs=conn.execute(SQL)
''執行結果將有兩個select的結果集,當前第一個select的recordset處於激活狀態
arrA=rs.GetRows''----------取得SElECTaRecordset的二維數組
setrs=rs.NextRecordset
''------------最關鍵的一步,使用Nextrecordset激活下一個recordset
arrB=rs.GetRows''----------再次取得第二個SElECTbRecordset的二維數組
Rs.close
setrs=nothing''---------儘早釋放數據庫對象,關閉記錄集
CONN.close
setCONN=Nothing
這樣,我們所有關於數據庫的數據幹乾淨淨的提取完成,用最早的時間釋放數據庫資源
''-----------//
''========用取得的arrAarrB進行頁面處理,顯示數據結果======
''注意,arrA=GetRows後得到的數組,第一維是代表列,第二維代表行
rowsA=ubound(arrA,2)''----提取arrA的第二維下標,相當於取得recordset的記錄行數
rowsB=ubound(arrB,2)''-----同上,提取arrB的第二維下標
''做數據循環:
''第一個select表的循環
response.write"<table>"
Fori=0torowsA
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表循環