专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » vbado异步:数据异步加载-vb教程 »正文

vbado异步:数据异步加载-vb教程

来源: 发布时间:星期四, 2009年2月12日 浏览:307次 评论:0


载是ADO种数据加载方式主要由记录集options参数来控制!

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


Options
可选Long 值指示提供者计算 Source 参数方式(如果该参数表示除 Command 对象的外某些内容)或者指示 Record 应该从以前保存过文件中恢复可以是个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值这些值可以用位 AND 操作符组合

ExecuteOptionEnum
指定提供者执行命令方式

常量 值 介绍说明
adAsyncExecute 0x10 指示命令将异步执行
该值不能和 CommandTypeEnum 值 adCmdTableDirect 组合
 
adAsyncFetch 0x20 指示在 CacheSize 属性中指定数量以后剩余行将被异步检索
adAsyncFetchNonBlocking 0x40 指示检索时主线程从不会阻塞如果未检索到所请求当前行将自行移动到文件结尾
如果从包含持久存储 Record Stream 中打开 Record那么 adAsyncFetchNonBlocking 将不起作用;该操作将同步进行并发生阻塞

当 adCmdTableDirect 选项被用于打开 RecordadAsynchFetchNonBlocking 不起作用
 
adExecuteNoRecords 0x80 指示命令文本是不返回行命令或存储过程(例如仅插入数据命令)如果检索到任何行它们将被放弃且不返回
adExecuteNoRecords 只能作为可选参数传递给 Command 或 Connection Execute 思路方法
 
adExecuteStream 0x400 指示命令执行结果应当作为流返回
adExecuteStream 只能作为可选参数传递给 Command Execute 思路方法
 
adExecuteRecord   指示 CommandText 是个命令或存储过程它返回应当被作为 Record 对象返回
adOptionUnspecied -1 指示未指定命令


CommandTypeEnum
指定解释命令参数思路方法

常量 值 介绍说明
adCmdUnspecied -1 不指定命令类型参数
adCmdText 1 按命令或存储过程文本定义计算 CommandText
adCmdTable 2 按表名计算 CommandText该表列全部是由内部生成 SQL 查询返回
adCmdStoredProc 4 按存储过程名计算 CommandText
adCmdUnknown 8 默认值指示 CommandText 属性中命令类型未知
adCmdFile 256 按持久存储 Record 文件名计算 CommandText只和 Record.Open 或 Requery 起使用
adCmdTableDirect 512 按表名计算 CommandText该表列被全部返回只和 Record.Open 或 Requery 起使用若要使用 Seek 思路方法必须通过 adCmdTableDirect 打开 Record
该值不能和 ExecuteOptionEnum 值 adAsyncExecute 组合
 
般用这个参数adAsyncFetch来控制,另外需要
.Properties(\"Inital Fetch Size\")=50
另外可以参考MSCEVB分布式应用开发

举例,Vb6.0代码:

Dim AdoRs as ADODB.Record

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

整理总结:很多网友都问大数量加载问题现在这种方式可以较快返回数据般100万数据前面50条只需要5~6秒就返回来!这个方式需要注意是:

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

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

3对大数据量时C/S开发中提供翻页/网格滚动条结合方式对用户来话是极为方便网友提供用存储过程来实现本人在开发过程用分页Control控件和异步加载数据源结合实现了很好数据浏览

开发环境:VB6.0+MS SQL Server 2K +Windows ADS 2K通过


0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: