NextRecordset 和 GetRows 雙簧合奏
更新時(shí)間:2006年09月03日 00:00:00 作者:
NextRecordset 和 GetRows 大家可能用的很少!
最近使用使用,不錯(cuò)的好東東!
對(duì)提高批量查詢(xún),查詢(xún)紀(jì)錄集不是巨海量的情況很有效果
NextRecordset 和 GetRows 是Recordset的兩個(gè)屬性(屬性還是方法我是?;煜欠?$#$,弄不清四下五除一)
GetRows ---> 將recordset記錄集提取到一個(gè)二維數(shù)組中,我們對(duì)recordset數(shù)據(jù)的行為就轉(zhuǎn)移到該數(shù)組,可以早早的斷開(kāi)紀(jì)錄集,不用再使用元數(shù)據(jù)操作,rs.movnext, while not rs.eof等可以省掉
NextRecordset ----> 就是在一次提交多個(gè)查詢(xún),形成多個(gè)reordset結(jié)果集的情況下,提供一個(gè)離開(kāi)當(dāng)前工作的recordset,轉(zhuǎn)移到第二個(gè)recordset的方法!
主要是用在多個(gè)SELECT形成的結(jié)果集的情況
示例如下:
dim SQL,Rs,arrA,arrB,rowsA,rowsB
''======提取數(shù)據(jù)庫(kù)庫(kù)記錄====
(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)
''執(zhí)行結(jié)果將有兩個(gè)select 的結(jié)果集,當(dāng)前第一個(gè)select的recordset處于激活狀態(tài)
arrA=rs.GetRows ''----------取得SElECTa Recordset的二維數(shù)組
set rs=rs.NextRecordset
''------------最關(guān)鍵的一步,使用Nextrecordset激活下一個(gè)recordset
arrB=rs.GetRows ''----------再次取得第二個(gè)SElECTb Recordset的二維數(shù)組
Rs.close
set rs=nothing ''---------盡早釋放數(shù)據(jù)庫(kù)對(duì)象,關(guān)閉記錄集
CONN.close
set CONN=Nothing
這樣,我們所有關(guān)于數(shù)據(jù)庫(kù)的數(shù)據(jù)干干凈凈的提取完成,用最早的時(shí)間釋放數(shù)據(jù)庫(kù)資源
''-----------//
''========用取得的arrA arrB進(jìn)行頁(yè)面處理,顯示數(shù)據(jù)結(jié)果======
''注意,arrA=GetRows 后得到的數(shù)組,第一維是代表列,第二維代表行
rowsA=ubound(arrA,2) ''----提取arrA的第二維下標(biāo),相當(dāng)于取得recordset 的記錄行數(shù)
rowsB=ubound(arrB,2) ''-----同上,提取arrB的第二維下標(biāo)
''做數(shù)據(jù)循環(huán):
''第一個(gè)select表的循環(huán)
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>
''第二個(gè)select表循環(huán)
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 ''============小結(jié)========
這樣的結(jié)果,再清楚不過(guò)!
(1)使用Nextrecordset,可以處理多個(gè)select語(yǔ)句一次發(fā)送形成的結(jié)果集,減少網(wǎng)絡(luò)流量,必定加快速度!
不使用NextRecordset 則會(huì)這樣操作:
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將記錄集提取到數(shù)組中(放到內(nèi)存,所以要求記錄集不要海大啦)
用內(nèi)存的數(shù)組工作,而且省掉EOF,movenext等的判斷,誰(shuí)更快!自不必說(shuō)!
(3)最最主要的,我們利用上二者,一次性將所有的數(shù)據(jù)提完,快速斷開(kāi)數(shù)據(jù)庫(kù)連接和摧毀建立recordset數(shù)據(jù)庫(kù)對(duì)象,大大減少網(wǎng)絡(luò)流量!性能自然要提高很多!
最近使用使用,不錯(cuò)的好東東!
對(duì)提高批量查詢(xún),查詢(xún)紀(jì)錄集不是巨海量的情況很有效果
NextRecordset 和 GetRows 是Recordset的兩個(gè)屬性(屬性還是方法我是?;煜欠?$#$,弄不清四下五除一)
GetRows ---> 將recordset記錄集提取到一個(gè)二維數(shù)組中,我們對(duì)recordset數(shù)據(jù)的行為就轉(zhuǎn)移到該數(shù)組,可以早早的斷開(kāi)紀(jì)錄集,不用再使用元數(shù)據(jù)操作,rs.movnext, while not rs.eof等可以省掉
NextRecordset ----> 就是在一次提交多個(gè)查詢(xún),形成多個(gè)reordset結(jié)果集的情況下,提供一個(gè)離開(kāi)當(dāng)前工作的recordset,轉(zhuǎn)移到第二個(gè)recordset的方法!
主要是用在多個(gè)SELECT形成的結(jié)果集的情況
示例如下:
dim SQL,Rs,arrA,arrB,rowsA,rowsB
''======提取數(shù)據(jù)庫(kù)庫(kù)記錄====
(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)
''執(zhí)行結(jié)果將有兩個(gè)select 的結(jié)果集,當(dāng)前第一個(gè)select的recordset處于激活狀態(tài)
arrA=rs.GetRows ''----------取得SElECTa Recordset的二維數(shù)組
set rs=rs.NextRecordset
''------------最關(guān)鍵的一步,使用Nextrecordset激活下一個(gè)recordset
arrB=rs.GetRows ''----------再次取得第二個(gè)SElECTb Recordset的二維數(shù)組
Rs.close
set rs=nothing ''---------盡早釋放數(shù)據(jù)庫(kù)對(duì)象,關(guān)閉記錄集
CONN.close
set CONN=Nothing
這樣,我們所有關(guān)于數(shù)據(jù)庫(kù)的數(shù)據(jù)干干凈凈的提取完成,用最早的時(shí)間釋放數(shù)據(jù)庫(kù)資源
''-----------//
''========用取得的arrA arrB進(jìn)行頁(yè)面處理,顯示數(shù)據(jù)結(jié)果======
''注意,arrA=GetRows 后得到的數(shù)組,第一維是代表列,第二維代表行
rowsA=ubound(arrA,2) ''----提取arrA的第二維下標(biāo),相當(dāng)于取得recordset 的記錄行數(shù)
rowsB=ubound(arrB,2) ''-----同上,提取arrB的第二維下標(biāo)
''做數(shù)據(jù)循環(huán):
''第一個(gè)select表的循環(huán)
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>
''第二個(gè)select表循環(huán)
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 ''============小結(jié)========
這樣的結(jié)果,再清楚不過(guò)!
(1)使用Nextrecordset,可以處理多個(gè)select語(yǔ)句一次發(fā)送形成的結(jié)果集,減少網(wǎng)絡(luò)流量,必定加快速度!
不使用NextRecordset 則會(huì)這樣操作:
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將記錄集提取到數(shù)組中(放到內(nèi)存,所以要求記錄集不要海大啦)
用內(nèi)存的數(shù)組工作,而且省掉EOF,movenext等的判斷,誰(shuí)更快!自不必說(shuō)!
(3)最最主要的,我們利用上二者,一次性將所有的數(shù)據(jù)提完,快速斷開(kāi)數(shù)據(jù)庫(kù)連接和摧毀建立recordset數(shù)據(jù)庫(kù)對(duì)象,大大減少網(wǎng)絡(luò)流量!性能自然要提高很多!
相關(guān)文章
用QuickWAP組件結(jié)合ASP建設(shè)Wap站點(diǎn)
用QuickWAP組件結(jié)合ASP建設(shè)Wap站點(diǎn)...2007-03-03Asp生成RSS的類(lèi)_給網(wǎng)站加上RSS
對(duì)于喜歡網(wǎng)站的內(nèi)容被各個(gè)rss訂閱,利于別人快速掌握我們的信息,就需要這個(gè)東西,推薦2008-10-10asp實(shí)現(xiàn)計(jì)算兩個(gè)時(shí)間內(nèi)的工作日的函數(shù)
asp實(shí)現(xiàn)計(jì)算兩個(gè)時(shí)間內(nèi)的工作日的函數(shù)...2007-08-08asp長(zhǎng)文章用分頁(yè)符來(lái)分頁(yè)顯示
照正常的文章系統(tǒng)一路做下去,后臺(tái)的文章添加,文章的檢索,和文章的詳細(xì)頁(yè),都是常規(guī)方式操作,這里不加描述,請(qǐng)參閱相關(guān)帖子。2008-11-11