• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    NextRecordset 和 GetRows 雙簧合奏

    發布: 2007-7-14 19:37 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網 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數據庫對象,大大減少網絡流量!性能自然要提高很多!


    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>