ADO組件有一個非常好的屬性LockType,可用於鎖定記錄,這樣當一個更新開始之前可以去檢查這個屬性,如果還在鎖定狀態,則需要等待,以避免更新沖突.該屬性具體說明如下:
LockType 屬性
指示編輯過程中對記錄使用的鎖定類型。
設置和返回值
設置或返回以下某個 LockTypeEnum 的值。
常量 說明
adLockReadOnly 默認值,只讀。無法更改數據。
adLockPessimistic 保守式記錄鎖定(逐條)。提供者執行必要的操作確保成功編輯記錄,通常采用編輯時立即鎖定數據源的記錄的方式。
adLockOptimistic 開放式記錄鎖定(逐條)。提供者使用開放式鎖定,只在調用 Update 方法時鎖定記錄。
adLockBatchOptimistic 開放式批更新。用於與立即更新模式相反的批更新模式。
說明
打開 Recordset 前設置 LockType 屬性可指定打開時提供者應該使用的鎖定類型。讀取該屬性可返回在打開的 Recordset 對象上正在使用的鎖定類型。Recordset 關閉時 LockType 屬性為讀/寫,打開時該屬性為只讀。
提供者可能不支持所有的鎖定類型。如果某提供者不支持所需的 LockType 設置,則將替換為其他類型的鎖定。要確定 Recordset 對象可用的實際鎖定功能,請通過 adUpdate 和 adUpdateBatch 使用 Supports 方法。
如果 CursorLocation 屬性被設置為 adUseClIEnt,將不支持 adLockPessimistic 設置。設置不支持的值不會產生錯誤,因為此時將使用支持的最接近的 LockType 的值。
遠程數據服務用法 當在客戶端 (ADOR) 的 Recordset 對象上使用時,LockType 屬性只能設置為 adLockOptimisticBatch。
注:
更新數據前最後使用事務:
ADOConnection.BeginTrans; // 開始一個事務
try
// 在這裡寫更新數據庫語句.
ADOConnection.CommitTrans // 提交一個事務
except
ADOConnection.RollbackTrans; // 事務失敗則回滾事務,放棄所有更新操作