2013年9月27日 星期五

[Delphi]TADOConnection 交易

在對資料進行異動前,為避免異動失敗,造成後續存取資料不正確,因此使用ADO交易模式,在發生錯誤失敗時,回復相關異動。

主要動作如下:

  1. 在對資料庫進行任何異動前先 BeginTrans,開始進行新的交易 (ADOConnection 必需已與資料庫建立連接 Connected = True)
  2. 資料庫異動內容 Select, Insert, Update, Delete
  3. 確認異動內容 CommitTrans,此時將資料異動寫入資料庫
  4. 如發生錯誤則取消異動內容 RollBackTrans,則將所有異動取消

Code Sample:

begin
Try
ADOConnection1.BeginTrans; // 開始交易

ADOQuery1.Insert; // 或 Delete, Edit
ADOQuery1.FieldByName('fieldname').Value := ...;
ADOQuery1.Post;

ADOQuery1.Close;
ADOQuery1.SQL.Text:='............';
ADOQuery1.ExecSQL / Open;

ADOConnection1.CommitTrans; // 確認交易
Except
ADOConnection1.RollBackTrans; // 取消交易
end;
end;