• ODAC(V9.5.15) 学习笔记(十八) 数据集缓冲模式


    数据集的缓冲模式(Cached mode)是将数据库服务器的数据缓冲在客户端内存中进行处理,不再依赖服务器。只有当数据需要提交数据库服务器进行保存时,才将变更数据一次性提交数据库服务器。

    数据集缓冲模式的最大优点是减少了对数据库服务器的资源消耗,甚至可以在网络断开的情况下,对数据进行处理然后在网络连接后,提交数据库保存。与传统的2层架构数据库软件相比,有巨大的抗网络故障能力。包PB在内的绝大多数2层架构软件,一旦网络临时中断,导致数据库连接中断,客户端所有未能保存的修改将被丢弃,而在ODAC中这个问题不再存在。

    开启数据集缓冲模式非常简单,即设置数据集的CachedUpdates属性为True,如下:

    //启动本地缓存模式

    TDataSet.CachedUpdates := True;

    开启数据集的缓冲模式后,需要代码显性进行以下操作:

    1、查看数据集是否有数据变动,当数据集的UpdatesPending属性为True时表示有数据变动。

    2、查看数据集当前记录的变动状态,读取数据集的UpdateStatus属性,

    3、将数据集缓冲区中的数据提交数据库保存,调用方法ApplyUpdates,在调用该方法前,需要代码显性调用数据库连接组件的事务开启函数,并在提交成功后提交事务,或提交失败后回滚事务。

    4、当ApplyUpdates成功后,还需要调用方法CommitUpdates清除缓冲区。这一点与TClientDataSet不同,需要手工清除缓冲区。

    5、当ApplyUpdates失败后,需要调用方法RestoreUpdates恢复已经提交的数据状态标志,以便下一次能够正确提交。

    6、使用OnUpdateRecord事件来手工处理需要更新的数据,一旦填写了该事件的代码,ODAC将不再自动处理记录,这一点与TDataSetProvider的事件处理不同。

    7、使用OnUpdateError事件来处理更新过程中的错误。

    典型代码如下:

    procedure ApplyButtonClick(Sender: TObject);

    begin

       with MyQuery do

       begin

          Session.StartTransaction; //启动数据库事务

          try

             ApplyUpdates;    //修改数据提交数据库

             Session.Commit; //没有报错则提交数据库事务

             CommitUpdates;   //成功提交后清空缓冲区

          except

             RestoreUpdates; //提交失败,恢复缓冲区数据更新标志

             Session.Rollback;//回滚数据库事务

             raise;   //重新触发异常,显示错误信息

          end;

       end;

    end;

  • 相关阅读:
    骥遇伯乐,关键的一点是人与事的匹配
    好习惯改变一生
    工作中如何面对挫折 [转帖]
    教育心理学领域有一句经典名言
    接触之,熟悉之,打破之
    成年人的35个好习惯(收藏)
    如何树立威信
    人际关系的55个绝招
    人际交往常见几种心理障碍 -实用
    人生成长必须知道的20则故事!
  • 原文地址:https://www.cnblogs.com/ChinaEHR/p/4471924.html
Copyright © 2020-2023  润新知