• delphi使用ODAC控件事务处理(缓存提交)


    ODAC中事务处理(缓存提交模式)

    使用CachedUpdates属性可以为数据集启用或禁用缓存更新。 将CachedUpdates设置为True可将对数据集的更新存储在客户端的内部缓存中,而不是直接写入数据集的对应的数据库表中。 数据处理完成后,将所有缓存的更改写入数据库。

    property CachedUpdates: boolean default False;

    相关函数

    procedure ApplyUpdates; overload; virtual;  //将数据集的暂挂缓存更新写入数据库。
    procedure RestoreUpdates;  //将更新缓存中的所有记录标记为未更新状态。
    procedure CommitUpdates;  //清除缓存的更新缓冲区,标记为提交状态。
    procedure CancelUpdates;  //从缓存中清除所有未提交(CommitUpdates)的缓存更新,并将数据集恢复为其先前状态。

    用法

      OraSession.StartTransaction;
      try
        //数据处理
        OraQuery1.ApplyUpdates;  //尝试将OraQuery1更新写入数据库
        OraQuery2.ApplyUpdates;  //尝试将OraQuery2更新写入数据库
        OraSession.Commit;  //成功后,提交更改
      except
        OraQuery1.RestoreUpdates;  //恢复OraQuery1中记录的更新状态
        OraQuery2.RestoreUpdates;  //恢复OraQuery2中记录的更新状态
        OraSession.Rollback;  //失败后,撤消更改
        //处理异常(引发异常或离开),防止继续进行
      end;
      OraQuery1.CommitUpdates;  //成功后,清除OraQuery1的缓存
      OraQuery2.CommitUpdates;  //成功后,清除OraQuery2的缓存

    备注

    调用TOraSession.ApplyUpdates方法,将连接当前Session的所有CachedUpdates为True数据集中所有暂挂的缓存更新写入数据库中。 ApplyUpdates方法将缓存的数据传递到数据库,负责提交或回滚事务,并在操作成功时清除缓存。

    使用TOraSession.ApplyUpdates是更新数据集的首选方法,而不是调用每个单独数据集的ApplyUpdates方法。

      //设置连接
      OraQuery1.Session := OraSession;
      OraQuery1.CachedUpdates := True;
      OraQuery2.Session := OraSession;
      OraQuery2.CachedUpdates := True;
      try
        //数据处理
        OraSession.ApplyUpdates;  //尝试将连接到OraSession的OraQuery1和OraQuery2的缓存更新写入数据库
        //成功后,自动提交更改。失败后,自动撤消更改
        //Commit成功后,自动清除OraQuery1和OraQuery2的缓存
      except
        OraQuery1.RestoreUpdates; //恢复OraQuery1和OraQuery2中记录的更新状态
        OraQuery2.RestoreUpdates;
      end;
  • 相关阅读:
    滑雪在日本 之 新泻篇 7
    就算神游 之四:富士山和富士游乐园 12
    滑雪在日本 之 新泻篇 15
    就算神游 之四:富士山和富士游乐园 6
    滑雪在日本 之 新泻篇 6
    就算神游 之四:富士山和富士游乐园 13
    滑雪在日本 之 新泻篇 4
    20121022日记流水账
    滑雪在日本 之 新泻篇 8
    滑雪在日本 之 新泻篇 5
  • 原文地址:https://www.cnblogs.com/txgh/p/13835401.html
Copyright © 2020-2023  润新知