下载之家:专注下载8年,极速安全,用心打造!

下载之家首页 |最新软件 |软件排行 |软件专题

您当前所在位置: 下载之家 >  教程 >  PC软件教程 >  编程工具 >  VB精彩教程:数据的异步加载

VB精彩教程:数据的异步加载

时间:2015/11/06 17:15:36来源:下载之家作者:石头

导读:异步加载是ADO的一种数据加载方法,主要由记录集的options参数来控制!

  VB精彩教程:数据的异步加载

        异步加载是ADO的一种数据加载方法,主要由记录集的options参数来控制!

  ADO210.CHM中的格式:

  recordset.OpenSource,ActiveConnection,CursorType,LockType,Options

  Options

  可选。Long值,指示提供者计算Source参数的方法(如果该参数称除Command对象之外的某些内容),或指示Recordset应该从以前保存过的文件中恢复。能够是一个或多[被屏蔽广告]

  个CommandTypeEnum或ExecuteOptionEnum值,这些值能够用位AND操作符组合。

  ExecuteOptionEnum

  指定提供者执行命令的方法。

  常量值说明

  adAsyncExecute0x10指示命令将异步执行。

  该值不能与CommandTypeEnum的值adCmdTableDirect组合。

  adAsyncFetch0x20指示在CacheSize属性中指定的初始数量以后的剩余行将被异步检索。

  adAsyncFetchNonBlocking0x40指示检索时主线程从不会阻塞。如果未检索到所请求的行,现在行将自行移动到文件结尾。

  如果从包含持久存储Recordset的Stream中打开Recordset,那么adAsyncFetchNonBlocking将不起作用;该操作将同步进行并发生阻塞。

  当adCmdTableDirect选项被用于打开Recordset时,adAsynchFetchNonBlocking不起作用。

  adExecuteNoRecords0x80指示命令文本是不返回行的命令或存储过程(举个例子,仅插入数据的命令)。如果检索到任意行,它们将被放弃且不返回。

  adExecuteNoRecords只能作为可选参数传递给Command或Connection的Execute方式。

  adExecuteStream0x400指示命令执行的结果应当作为流返回。

  adExecuteStream只能作为可选参数传递给Command的Execute途径。

  adExecuteRecord指示CommandText是一个命令或存储过程,它返回应当被作为Record对象返回的单一行。

  adOptionUnspecified-1指示未指定命令。

  CommandTypeEnum

  指定解释命令参数的方式。

  常量值说明

  adCmdUnspecified-1不指定命令类型的参数。

  adCmdText1按命令或存储过程调用的文本定义计算CommandText。

  adCmdTable2按表名计算CommandText,该表的列全部是由内部生成的SQL查询返回的。

  adCmdStoredProc4按存储过程名计算CommandText。

  adCmdUnknown8默认值。指示CommandText属性中命令的类型未知。

  adCmdFile256按持久存储的Recordset的文件名计算CommandText。只与Recordset.Open或Requery一起使用。

  adCmdTableDirect512按表名计算CommandText,该表的列被全部返回。只与Recordset.Open或Requery一起使用。若要使用Seek途径,必须通过adCmdTableDirect打开Recordset。

  该值不能与ExecuteOptionEnum的值adAsyncExecute组合。普通用这个参数adAsyncFetch来控制,另外需要

  .Properties("InitalFetchSize")=50

  另外可参考《MSCE的VB分布式应用的开发》

  举例,Vb6.0的代码:

  DimAdoRsasADODB.Recordset

  setAdoRs=newADODB.Recordset

  WithAdoRs

  .CursorLocation=adUseClient

  .Properties("InitialFetchSize")=50

  .OpenmstrSQL,AdoCn,adOpenStatic,adLockOptimistic,adAsyncFetch

  If.BOF=FalseOr.EOF=FalseThen

  '--------------

  else

  Endif

  EndWith

  总结:诸多的网友都问大数量加载的问题,现在这种方法可较快的返回数据。平常100万数据,前面50条只需要5~6秒就返回来!这个方法需要注意的是:

  1、如果返数据量太大,而中途要取消,需要用AdoCn.Cancel来取消查询,否则数据会继续返回数据。

  2、如果数据量太大,记录集的释放会有问题。如果数据量在200M~300M时,setadors=nothing不会迅速释放高速缓存。希望有其它网友能够提供自己的见解。

  3、对大数据量时,C/S开发中提供翻页/网格的滚动条结合的方法,对客户来话是极为方便。有的网友提供用存储过程来实现。本人在开发过程用分页控件与异步加载的数据源结合,实现了不错的数据浏览。

  开发环境:VB6.0 MSSQLServer2K WindowsADS2K通过。

更多0

相关阅读 VB如何实现注册表的读写 VB实现注册表读写教程 VB精彩教程:数据的异步加载 VB多类图片数据库存取技巧 VB多类图片数据库存取教程 使用visual studio编写c++程序的方法教程 如何使用visual studio编写c++程序? Microsoft Visual Studio 2010的使用方法教程 更换Sublime Text主题字体的方法教程 如何更换Sublime Text主题字体?