Delphi ADOQuery的速度优化
把控件DBGridEh的一列的checkbox设为true,将其绑定DataSourceA和DOQuery。用Button添加了一个事件,用来取消对checkbox的操作:ADOQuery.CancelBatch();可是只能取消最后一步的操作。检查了很长时间才发现在DBGridEh的DataSource的Dataset 下的LockType的属性设置问题,我设置成了:ItOptimistic 后来将此属性改为:ltBatchOptimistic 就可以了
在网上查了一下,有如下说法:
1.ADOQuery.Update;ADOQuery.Delete;不用设置属.
2.locktype指定用户打开数据集时对数据集的锁定级:
ltUnspecified 未指定锁定级
ltReadOnly Read-only 只读
ltPessimistic 记录级别(该记录被编辑时其它用户不能用)
ltOptimistic 独立模式(与原来结果集对照,如果在此期间其它用户修改了结,则你的结果不能保)
ltBatchOptimistic 批量模式(使用缓存,进行批量提交)
ADOQuery的属性含义:
ltUnspecified 不特別指
ltReadOnly 选出來的资料表只能读,无法写入
ltPessimistic 选出来的资料表可以写,当改记录写入时会立刻写入并锁
ltOptimistic 选出来的资料表可写入,当该记录表写入时不会立刻写入但会锁,当执行updates时才正式写入改记
ltBatchOptimistic 选出来的资料表可写入,当该记录写入时不会立刻写入但会锁定,当执行updates才正式整批写入该记录(可以修改多条整批update)
ADOQuery1.CacheSize :=500;//适当大小的CacheSize可以加快数据集遍历速度
ADOQuery1.CursorLocation := clUseServer;//服务器端游标可以加快数据集打开速度
ADOQuery1.LockType := ltReadOnly;//只读锁会加快数据读取速度
ADOQuery1.DisableControls;
try
//....打开数据
finally
ADOQuery1.EnableControls;
end;
📱 扫码关注公众号
扫描二维码关注我们,获取更多精彩内容
实时更新 · 干货满满