zoukankan      html  css  js  c++  java
  • UpdateBatch与事务处理的一点总结

    对于某些设置或者提交,如果希望是全部修改完毕后才确定生效,可以将DataSet的LockType:=ltBatchOptimistic,这样就可以了。然后每次做的修改和改动都暂时保存在缓存中,必须通过UpdateBatch来提交入库。可以通过判断DataSet的UpdateStatus属性是否为usUnmodified就可以知道先前是否已经提交了改动了。

    注意:对于用户已经Edit,但是未提交的修改,也要注意提示用户保存。由于没有提交前UpdateStatus并没有发生变化,所以还要注意判断是否ADOTable1.State=dsBrowse,以便提示用户是否保存。

        if (ADOTable1.UpdateStatus<>usUnmodified) or (Not (ADOTable1.State=dsBrowse)) then
        begin
        end;

    这个用法也可以通过事务实现,操作前先通过ADOConnection的BeginTrans开始事务,提交修改是CommitTrans,回滚是RollbackTrans,判断是否处于事务中读取InTransaction属性即可。事务也有一个缺点,就是DataSet没有事务,如果多个DataSet使用一个ADOConnection,如果使用事务势必影响其他操作。而且有文章说事务处理起来比较耗费资源,至少比UpdateBatch费资源,呵呵~

  • 相关阅读:
    请求接口时params和data的区别
    深拷贝
    react学习笔记---父子组件间值得传递
    表单验证自定义二选一
    vue数据复杂时的表单验证
    jq获取路径参数的方法
    删除对象中的元素的方法
    iOS的URL处理
    cocoapod的下载安装解释
    初探博客园
  • 原文地址:https://www.cnblogs.com/jijm123/p/10246728.html
Copyright © 2011-2022 走看看