天天看點

鎖定資料記錄

鎖定資料記錄

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;        // 事務失敗則復原事務,放棄所有更新操作

    end;