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

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

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

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

    數據異步加載

    發布: 2007-7-01 21:48 | 作者: admin | 來源: | 查看: 11次 | 進入軟件測試論壇討論

    領測軟件測試網

    異步加載是ADO的一種數據加載方式,主要由記錄集的options參數來控制!

    ADO210.CHM中的格式:
    recordset.Open Source, ActiveConnection, CursorType, LockType, Options


    Options
    可選。Long 值,指示提供者計算 Source 參數的方式(如果該參數表示除 Command 對象之外的某些內容),或者指示 Recordset 應該從以前保存過的文件中恢復?梢允且粋或多個 CommandTypeEnum 或 ExecuteOptionEnum 值,這些值可以用位 AND 操作符組合。

    ExecuteOptionEnum
    指定提供者執行命令的方式。

    常量 值 說明
    adAsyncExecute 0x10 指示命令將異步執行。
    該值不能與 CommandTypeEnum 的值 adCmdTableDirect 組合。
     
    adAsyncFetch 0x20 指示在 CacheSize 屬性中指定的初始數量以后的剩余行將被異步檢索。
    adAsyncFetchNonBlocking 0x40 指示檢索時主線程從不會阻塞。如果未檢索到所請求的行,當前行將自行移動到文件結尾。
    如果從包含持久存儲 Recordset 的 Stream 中打開 Recordset,那么 adAsyncFetchNonBlocking 將不起作用;該操作將同步進行并發生阻塞。

    當 adCmdTableDirect 選項被用于打開 Recordset 時,adAsynchFetchNonBlocking 不起作用。
     
    adExecuteNoRecords 0x80 指示命令文本是不返回行的命令或存儲過程(例如,僅插入數據的命令)。如果檢索到任何行,它們將被放棄且不返回。
    adExecuteNoRecords 只能作為可選參數傳遞給 Command 或 Connection 的 Execute 方法。
     
    adExecuteStream 0x400 指示命令執行的結果應當作為流返回。
    adExecuteStream 只能作為可選參數傳遞給 Command 的 Execute 方法。
     
    adExecuteRecord   指示 CommandText 是一個命令或存儲過程,它返回應當被作為 Record 對象返回的單一行。
    adOptionUnspecified -1 指示未指定命令。


    CommandTypeEnum
    指定解釋命令參數的方法。

    常量 值 說明
    adCmdUnspecified -1 不指定命令類型的參數。
    adCmdText 1 按命令或存儲過程調用的文本定義計算 CommandText。
    adCmdTable 2 按表名計算 CommandText,該表的列全部是由內部生成的 SQL 查詢返回的。
    adCmdStoredProc 4 按存儲過程名計算 CommandText。
    adCmdUnknown 8 默認值。指示 CommandText 屬性中命令的類型未知。
    adCmdFile 256 按持久存儲的 Recordset 的文件名計算 CommandText。只與 Recordset.Open 或 Requery 一起使用。
    adCmdTableDirect 512 按表名計算 CommandText,該表的列被全部返回。只與 Recordset.Open 或 Requery 一起使用。若要使用 Seek 方法,必須通過 adCmdTableDirect 打開 Recordset。
    該值不能與 ExecuteOptionEnum 的值 adAsyncExecute 組合。
     
    一般用這個參數adAsyncFetch來控制,另外需要
    .Properties("Inital Fetch Size")=50
    另外可以參考《MSCE的VB分布式應用的開發》

    舉例,Vb6.0的代碼:

    Dim AdoRs as ADODB.Recordset

    set AdoRs =new ADODB.Recordset
    With AdoRs
        .CursorLocation = adUseClient
        .Properties("Initial Fetch Size") = 50
        .Open mstrSQL, AdoCn, adOpenStatic, adLockOptimistic, adAsyncFetch
        If .BOF = False Or .EOF = False Then
         ´--------------
        else
        End if
    End With

    總結:很多的網友都問大數量加載的問題,現在這種方式可以較快的返回數據。一般100萬數據,前面50條只需要5~6秒就返回來!這個方式需要注意的是:

    1。如果返數據量太大,而中途要取消,需要用AdoCn.Cancel來取消查詢,否則數據會繼續返回數據。

    2。如果數據量太大,記錄集的釋放會有問題。如果數據量在200M~300M時,set adors=nothing 不會快速釋放高速緩存。希望有其它網友能夠提供自己的見解。

    3。對大數據量時,C/S開發中提供翻頁/網格的滾動條結合的方式,對用戶來話是極為方便。有的網友提供用存儲過程來實現。本人在開發過程用分頁控件與異步加載的數據源結合,實現了很好的數據瀏覽。

    開發環境:VB6.0+MS SQL Server 2K +Windows ADS 2K通過。


    延伸閱讀

    文章來源于領測軟件測試網 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>