Delphi ADOQuery的属性 locktype、CursorLocation 、Filter、CursorType、CancelBatch 和 UpdateBatch

   2023-02-09 学习力0
核心提示:以下数据,部分来自网络的收集,部分为自己测试后的原创整理,希望对你有帮助,更新会注明日期。1、locktype  指定用户打开数据集时对数据集的锁定级别:ltUnspecified   //未指定锁定级别ltReadOnly   //Read-only    只读   ,会加快数据读取速度lt
以下数据,部分来自网络的收集,部分为自己测试后的原创整理,希望对你有帮助,更新会注明日期。
1、locktype  指定用户打开数据集时对数据集的锁定级别:
  • ltUnspecified   //未指定锁定级别
  • ltReadOnly   //Read-only    只读   ,会加快数据读取速度
  • ltPessimistic   //记录级别(该记录被编辑时其它用户不能用)
  • ltOptimistic   //独立模式(与原来结果集对照,如果在此期间其它用户修改了结果,则你的结果不能保存)
  • ltBatchOptimistic      //批量模式(使用缓存,进行批量提交)

 ADOQuery的属性含义:

  • ltUnspecified      //不特別指定
  • ltReadOnly        //选出來的资料表只能读,无法写入
  • ltPessimistic      //选出来的资料表可以写入,当改记录写入时会立刻写入并锁定
  • ltOptimistic        //选出来的资料表可写入,当该记录表写入时不会立刻写入但会锁定,当执行updates时才正式写入改记录
  • ltBatchOptimistic    //选出来的资料表可写入,当该记录写入时不会立刻写入但会锁定,当执行updates才正式整批写入该记录(可以修改多条整批update)

例如:开启本地缓存

ADOQuery1.LockType:=ltBatchOptimistic;   //批处理
ADOQuery1.CacheSize:=1000;           //缓存大小 
ADOQuery1.CursorLocation:=clUseServer;   //服务端模式

// 如果是想保存在硬盘文件,则
ADOQuery1.LoadFromFile(); 
ADOQuery1.SaveToFile();    //数据处理就在本地进行了,减少了网络传送

ADOQuery1.UpdateBatch    //把缓存中修改的数据提交到服务器;更新数据

以上头几句数据其实真正有用的是这两句:  --- -2019.08.22

ADOQuery1.LockType:=ltBatchOptimistic;   //批处理
ADOQuery1.UpdateBatch       //把缓存中修改的数据提交到服务器;更新数据

其余的加上去,反而会造成各种错误要处理,什么错误?

例如:1)“提供程序不能确定该值,该字段的默认值不可用,或用户未设置新值”   ,   产生错误的模块:ClUseServer

   2)“BOF或EOF中有一个是“真”,或者当前的记录已被删除”  ,产生错误的模块 CasheSize

另外说明一下,CasheSize大小的设置,其实在clUseClient 模式下无效果。   ----2019.08.22

 

2、CursorLocation //使用CursorLocation指示使用连接对象连接到ADO数据存储的游标是使用客户端游标库还是服务器端游标库。游标位置仅影响设置属性后打开的连接。CursorLocation的默认值是clUseClient。

clUseClient   //提供了更大的灵活性。所有数据都被检索到本地机器上,然后在那里进行操作,允许服务器通常不支持的操作,比如对数据进行排序和重新排序以及附加过滤。SQL语句是在服务器上执行的,因此对于使用WHERE子句限制结果集的语句,只会将缩减后的结果集检索到本地游标。

clUseServer //提供的灵活性较小,但对于大型结果集可能更有利(或更必要)。当结果集的绝对大小超过创建客户端游标所需的可用磁盘空间时,就有必要使用服务器端游标。而且,许多服务器只支持单向游标。这将阻止在结果集中向后移动数据集中的记录指针(甚至一条记录)。

 

3、Filter 属性值,即过滤数据

例如:

ADOQuery1.Filter:='Test='+''''+Edit1.text+'''';

注意:Filtered需要设置 为 true

 

4、CursorType    //游标类型  

打开ADO数据集时用于记录集的游标类型。必须在激活数据集组件之前设置游标类型。在其他游标方面,CursorType影响记录集的方向滚动和其他用户所做更改的可见性。

CursorType的默认值是ctKeyset。

  •   ctOpenForwardOnly   //向前移动    除了只能在记录集中向前移动以外,其它的和动态游标类似。   (只能向前滚动的光标;性能更好,因为只需要单通记录集。)
  •   ctKeyset      //键集    –   不允许查看其他用户添加的记录和访问其他用户删除的记录。   (其他用户添加的记录不可见;其他用户删除的记录不可访问。)  
  •   ctDynamic  //动态    – 允许其他用户插入、更新和删除,支持在记录集中所有方向上的移动。   (其他用户对数据的修改、删除和插入可见;允许前后滚动。)
  •   ctStatic       //静态    -  支持在记录集中所有方向上的移动。但是其他用户的插入、更新和删除操作不可见。   (记录的静态副本;其他用户不可见的数据更改;主要用于报告。)
  •   ctUnspecified   //尚未指定特定的游标类型。

 

5、CancelBatch  和 UpdateBatch  即取消缓存  和 更新缓存 到服务器

 通用的几个参数说明

  • arCurrent当前记录  
  • arFiltered :符合Filter过滤后的所有记录(如果你使用Filter过滤的话)  
  • arAll      :所有记录 
  • arAllChapters :所有节点,具体使用未知
例如:
   
CancelBatch( arCurrent ) ;   //取消当前行记录
UpdateBatch ( arCurrent );     //更新当前行记录

  

 

 

 

创建时间:2015.04.24   更新时间:2019.08.22 2020.02.03

 

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Delphi中的消息处理机制 delphi 方法
    每一个VCL都有一内在的消息处理机制,其基本点就是构件类接收到某些消息并把它们发送给适当的处理方法,如果没有特定的处理方法,则调用缺省的消息处理句柄。    其中mainwndproc是定义在Twincontrol类中的一个静态方法,不能被重载(Override)。它不直接处
    02-09
  • Delphi XE6 通过JavaScript API调用百度地图
    Delphi XE6 通过JavaScript API调用百度地图
    参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的。 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu.com/map/jsdemo.htm下一步,就是把例子中的代码,移动TWebBrower中。 unit Unit
    02-09
  • Delphi编译/链接过程 delphi编程案例
    Delphi编译/链接过程 delphi编程案例
    下面展示了Delphi是怎样编译源文件,并且把它们链接起来,最终形成可执行文件。当Delphi编译项目(Project)时,将编译项目源文件、窗体单元和其他相关单元,在这个过程中将会发生好几件事情:首先,Object Pascal编译器把项目单元编译为二进制对象文件,然后
    02-09
  • Delphi CompilerVersion Constant / Compiler C
    http://delphi.wikia.com/wiki/CompilerVersion_Constant The CompilerVersion constant identifies the internal version number of the Delphi compiler.It is defined in the System unit and may be referenced either in code just as any other consta
    02-09
  • Delphi revelations #1 – kbmMW Smart client
    Delphi 启示 #1 – kbmMW Smart client on NextGen (Android) – 作用域问题以更高级的方式使用kbmMW smart client,在Android设备上,我遇到了问题。通过继承TInvokeableVariantType,kbmMW smart client可以使用Delphi支持的特殊类型的自定义Variant,从而可
    02-09
  • Delphi 调用DLL外部函数时的指针参数
    某项目需要调用设备厂家提供的DLL的函数,厂家给了一个VB的例子,有个参数是ByRef pBuffer As Single。于是在Delphi中用buffer:array of single代替:function func(buffer:array of single;count:integer):integer;far;stdcall;external 'func.dll';调用后bu
    02-09
  • 《zw版·Halcon-delphi系列原创教程》 Halcon分
    《zw版·Halcon-delphi系列原创教程》 Halcon分类函数012,polygon,多边形为方便阅读,在不影响说明的前提下,笔者对函数进行了简化::: 用符号“**”,替换:“procedure”:: 用大写字母“X”,替换:“IHUntypedObjectX”:: 省略了字符:“const”、“OleVa
    02-09
  • 最简单的delphi启动画面(转)
    首先做一窗体,然后将BorderStyle的属性设为bsnone,放image控件,align设为alclient 然后将主程序的修改为 uses Windows, Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; {$ R *.res} begin Application.Initialize; Form2:=TForm2.Cre
    02-09
  • Delphi备忘三:TCollection的使用,用Stream保
     代码unit ufrmGetFunctionDefine;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,TypInfo,  Dialogs,ufrmStockBaseCalc, StdCtrls, ComCtrls,uQEFuncManager,uWnDataSet,uDataService;type  T
    02-09
  • Delphi Dcp 和BPL的解释
    dcp = delphi compiled package,是 package 编译时跟 bpl 一起产生出来的,记录着 package 中公开的 class、procedure、function、variable、const.... 等等的名称和相对位址。package英文翻译过来就是“包”。如果 某个控件包 A 引用了 控件包 B,当 控件包
    02-09
点击排行