資料非同步載入

2021-04-17 08:39:37 字數 2650 閱讀 5842

非同步載入是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通過。

ECharts 非同步載入資料

echarts 通常資料設定在setoption中,如果我們需要非同步載入資料,可以配合jquery等工具,在非同步獲取資料後通過 setoption 填入資料和配置項就行。json 資料 var mychart echarts.init document.getelementbyid main g...

EASYUI TREEGRID非同步載入資料實現方法

複製 如下 function 這個是頁面初始化的。看看他的json 複製 如下 標紅的地方是特別有用的,我按照他的這個做法,自己做了乙個,始終是沒有資料的,後來發現了乙個問題,複製 如下 上面這個資料 沒有乙個根節點,所以頁面出來什麼都沒有。我的資料只有parentid這個玩意,所以頁面一片空白。這...

WPF 非同步載入資料

參考 private void window loaded object sender,routedeventargs e loads.completed new eventhandler loads completed void loads completed object sender,even...