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

41715098

41715098

2016-02-19 14:21

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的VB精彩教程:数据异步加载,希望大家看完后能赶快学习起来。
VB精彩教程:数据异步加载

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)->

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
VB精彩教程:数据异步加载

ListView异步加载图片实现思路

编程语言 网络编程
ListView异步加载图片实现思路

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

nhibernate数据加载之Criteria加载

电脑网络
nhibernate数据加载之Criteria加载

ios通过按钮点击异步加载图片

编程语言 网络编程
ios通过按钮点击异步加载图片

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ListView异步加载图片实现思路(优化篇)

编程语言 网络编程
ListView异步加载图片实现思路(优化篇)

在VB中异步执行程序

编程语言 网络编程
在VB中异步执行程序

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

html中If语句详解

html中If语句详解

VB图像处理之图像的亮度对比度调整

VB图像处理之图像的亮度对比度调整
下拉加载更多内容 ↓