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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM