NextRecordset和GetRows是Rec
GetRows方法:將RecordSet記錄集提取到一個二維數(shù)組中,我們對RecordSet數(shù)據(jù)的行為就轉(zhuǎn)移到該數(shù)組,可以早早的斷開紀(jì)錄集,不用再使用源數(shù)據(jù)操作,rs.movnext, while not rs.eof等可以省掉。
NextRecordset方法:一次提交多個查詢,形成多個RecordSet結(jié)果集的情況下,提供一個離開當(dāng)前工作的RecordSet,轉(zhuǎn)移到下一個RecordSet的方法。主要是用在多個select形成的結(jié)果集的情況。示例如下:
查詢記錄
set rs=conn.execute(“select Ca1,Ca2,Ca3,Ca4 from TableA select Cb1,Cb2,Cb3,Cb4,Cb5 from TableB”)
‘執(zhí)行后將產(chǎn)生兩個select的結(jié)果集,當(dāng)前第一個select的RecordSet處于激活狀態(tài)。
arrA=rs.GetRows’取得第一個查詢結(jié)果的二維數(shù)組
set rs=rs.NextRecordset‘激活下一個RecordSet
arrB=rs.GetRows’取得第二個查詢結(jié)果的二維數(shù)組
set rs=nothing‘釋放數(shù)據(jù)庫對象
這樣,我們所有關(guān)于數(shù)據(jù)庫的數(shù)據(jù)提取完成,用最早的時間釋放數(shù)據(jù)庫資源。
注意,GetRows方法得到的數(shù)組,第一維代表列,第二維代表行。
For i=0 to UBound(arrA,2)
response.write(“<tr>”)
response.write(“<td>字段1:”&arrA(i,0)&“</td>”)
response.write(“<td>字段2:”&arrA(i,1)&“</td>”)
response.write(“<td>字段3:”&arrA(i,2)&“</td>”)
response.write(“<td>字段4:”&arrA(i,3)&“</td>”)
response.write(“</tr>”)
Next
response.write(“</table>”)
’第二個select表循環(huán)
response.write(“<p>表二:</p><table>”)
For i=0 to UBound(arrB,2)
response.write(“<tr>”)
response.write(“<td>字段1:”&arrB(i,0)&“</td>”)
response.write(“<td>字段2:”&arrB(i,1)&“</td>”)
response.write(“<td>字段3:”&arrB(i,2)&“</td>”)
response.write(“<td>字段4:”&arrB(i,3)&“</td>”)
response.write(“<td>字段5:”&arrB(i,4)&“</td>”)
response.write(“</tr>”)
Next
response.write(“</table>”)
優(yōu)點:
1、使用NextRecordSet,可以處理多個select語句一次發(fā)送形成的結(jié)果集,減少網(wǎng)絡(luò)流量,必定加快速度!
2、使用GetRows將記錄集提取到數(shù)組中(內(nèi)存操作,因此記錄集不能太大)用內(nèi)存的數(shù)組工作,而且省掉eof、MoveNext等判斷,速度更快!
3、最最主要的,我們利用上二者,一次性將所有的數(shù)據(jù)提完,快速斷開數(shù)據(jù)庫連接和銷毀建立的RecordSet數(shù)據(jù)庫對象,大大減少網(wǎng)絡(luò)流量!性能自然要提高很多!
新聞熱點
疑難解答
圖片精選