王朝网络
分享
 
 
 

数据异步加载

王朝vb·作者佚名  2006-01-09
宽屏版  字体: |||超大  

异步加载是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通过。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有