Delphi ADOQuery的属性 locktype、CursorLocation 、Filter、CursorType、CancelBatch 和 UpdateBatch
- 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