zoukankan      html  css  js  c++  java
  • ODAC(V9.5.15) 学习笔记(四)TMemDataSet (1)

    所有的数据集类组件都是从TMemDataSet继承下来的,该组件实现了内存中对数据的管理,其主要的属性、方法和事件如下。

    1.数据更新

    名称

    类型

    说明

    CachedUpdates

    Boolean

    数据集是否采用缓冲模式

    ApplyUpdates

     

    将缓冲区中未提交的数据提交数据库,但不执行数据库的事务操作。此时缓冲区数据仍然存在,UpdateStatus状态处于修改状态,需要调用CommitUpdates来清除缓存中的数据,并将状态还原成非修改状态。ApplyUpdates没有放在Try Exception块中,如果有数据更新失败,将触发异常信息提示,如果在OnUpdateError中没有将UpdateAction设置为uaAbort将再次触发错误信息提示。

    CancelUpdates

     

    放弃对缓冲区中未提交数据的变动,恢复原来的状态

    RestoreUpdates

     

    将数据集中所有缓冲区数据恢复到调用ApplyUpdates之前的更新状态,一版用于更新失败时使用

    CommitUpdates

     

    清除缓冲区的未提交数据,但是通过OnUpdateRecord或OnUpdateError事件跳过的修改内容不会被清除

    UpdatesPending

    Boolean

    判断缓冲区是否存在未提交的数据,True表示存在

    UpdateStatus

    TUpdateStatus

    返回数据集在当前记录下的更新状态。

    UpdateResult

    TUpdateAction

    返回数据集调用ApplyUpdates方法后在该记录的执行状态

    UpdateRecordTypes

     

    在缓冲模式下返回当前记录的更新模式

    LocalUpdate

    Boolean

    是否本地更新,如果是True则将阻止数据集自动将数据更新提交服务器,而是缓冲在本地内存中。

    DeferredPost

     

    与Post不同的是,DeferredPost将已经完成的修改提交数据库永久保存,同时数据集状态仍然停留在编辑或新增状态(dsEdit, dsInsert),调用Cancel函数并不能取消已经提交数据库的修改内容,使用上需慎重

    RevertRecord

     

    在缓冲模式下,撤销对当前记录的数据更新内容

    OnUpdateRecord

     

    在更新某条记录时触发,如果是在缓冲模式下,则事件在ApplyUpdates之后触发。事件的UpdateAction缺省为uaFail,如果代码操作成功则需要设置为uaApplied。其取值如下:

    uaFail    触发失败异常信息

    uaAbort        中断后续更新并回滚

    uaSkip    跳过,但不报错

    uaRetry        重新尝试,很容易形成死循环

    uaApplied     代码已经处理,ODAC不再自动处理

    需要注意ODAC的OnUpdateRecord事件与系统自带TDataSetProvider的OnUpdateRecord事件略有不同,ODAC的该事件一旦编写了代码,数据集就将数据更新的权利交给了代码,不再自动更新数据。

    OnUpdateError

     

    当数据更新发生错误时触发,如果是在缓冲模式下,则事件在ApplyUpdates之后触发。事件的UpdateAction缺省为uaFail,通过访问事件参数DataSet的各个字段TField.OldValue和TField.NewValue获取原值和新值,设置事件的UpdateAction为uaRetry可以重新尝试更新。ApplyUpdates没有放在Try Exception块中,将触发异常信息提示,如果在OnUpdateError中没有将UpdateAction设置为uaAbort将再次触发错误信息提示。

  • 相关阅读:
    linux shell 获取文件夹全文绝对路径
    Selenium自动化获取WebSocket信息
    Automatically generating nice graphs at end of your Load Test with Apache JMeter and JMeter-Plugins
    卡夫卡与风暴:卡夫卡和风暴的明智比较
    Apache Kafka安全| Kafka的需求和组成部分
    Kafka Schema Registry | 学习Avro Schema
    QT 内部使用函数列表
    QT图标添加
    QT快捷键
    QT软件上架以及自启动
  • 原文地址:https://www.cnblogs.com/ChinaEHR/p/4471849.html
Copyright © 2011-2022 走看看