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

2016-02-19 14:21 38 1 收藏

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

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问https://www.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://www.tulaoshi.com/bianchengyuyan/)->

来源:https://www.tulaoshi.com/n/20160219/1606806.html

延伸阅读
       在VC或VB中需要耗时的查询时,  客户一般需要等待很长一段时间, 这种情况客户是无法容忍而且也无法取消, 那么怎样么办呢.           1.首先采用多线程的方式, 工作线程与UI线程分开, 工作线程处理完毕时向主线程发消处理完毕的消息;另一种方法采用向...
标签: Web开发
使用javascript进行异步提交数据比直接使用现成的AJAX控件效率高很多(我只使用过ajax.net) 实验发现可以提交大容量数据——实验到40K左右 function doSubmit() { ....... var urlParameter="cfg="+urlPara1 +"&type="+vkeytype +"&starttime="+vstarttime +"&endtime="+vendtime +"&am...
熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程,但唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上。VB6.0已能够解决该问题,只是帮助中没有明确说明,并且没有描述到一些关键功能,由于以前的版本中可以动态创建进程外服务:如果对象是外部可创建的,可在 Set 语句中用 New 关键字、Cre...
标签: APP 网页设计
6种常见的数据加载模式 目前APP设计中,合理的数据加载方式,主要分如下六种:1.全屏加载 2.优先加载 3.整页加载 4.自动加载 5.智能加载 6.离线加载,这六种方式,适用于不同的需求场景,也适用于不同类型的APP,让我们来一一解读。 全屏加载 全屏加载就是整个屏幕白屏进行数据加载,一般会有菊花转配合,常用于手机网页的加...
一、控件名.DataBindings.Add("属性名", dataset_system.Tables("Company"), dataset_system.Tables("Company").Columns.Item(i).Caption) 属性: 如() 'TEXT' 二、ListBox与ComboBox的数所绑定 Me.ComboBox1.DataSource = dataset_system.Tables("表名") Me.ComboBox1.DisplayMember = "字段名1" Me.ComboBox1.ValueMember = "字段名2" ...

经验教程

444

收藏

29
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部