zoukankan      html  css  js  c++  java
  • Delphi ADOQuery的速度优化 转

     

     
    今天终于把纠缠了几天的问题改完了,说到底只是一个很小的问题,就是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;

  • 相关阅读:
    [整理]弦图学习笔记
    [整理]NOI Online 2021第一场题解
    [整理]Pólya 定理入门到入土
    [游记]2021省选抱灵记
    [整理]一些好玩的/板子的动态规划题目
    [整理]网络流随记——终(有关网络流的一些杂项)
    [整理][持续更新]多项式知识点大全(超简洁!)
    [洛谷P4338][题解][ZJOI2018]历史
    [游记]WC2021游记
    Codeforces Round #703 (Div. 2) (A~E)
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/3254618.html
Copyright © 2011-2022 走看看