时间: 2021-07-31 作者:daque
异步加载是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.recordsetwith adors .cursorlocation = aduseclient .properties("initial fetch size") = 50 .open mstrsql, adocn, adopenstatic, adlockoptimistic, adasyncfetch if .bof = false or .eof = false then '-------------- else end ifend 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经过。