我想问一问,除了BeginTrans以外,还有什么办法可以缓存批量操作,然后再一次过保存到数据库里面。

解决方案 »

  1.   

    database1.StartTransaction;
    database1.commit;
      

  2.   

    adoquery或者clientdataset可以
    Tadoquery.lockType=ltBatchOptimistic;
    Tadoquery.UpdateBatch;clientdataset 要用DataSetProvider
      

  3.   

    我尝试过zbluecn(-=Zblue=-)的方法,的确有效,但有一个问题是,当我使用了ltBatchOptimistic方法之后,TAdoConnection.Begintrans是否再也不起作用了?
    例如表A如下
    A字段
    1
    2我尝试过先修改第一条记录为3,然后BeginTrans,修改第2条记录为4,然后RollBack,再UpdateBatch,发现并不是我想的,RollBack并没有把第2条记录的值恢复过来,而依然是4,UpdateBatch后的结果为
    3
    4我预料中的结果为
    3
    2这是为什么呢?
      

  4.   

    当你将第二条记录修改为4的时候,虽然你BeginTrans,但你并没有提交到数据库中,是在缓存中,所以后面的RollBack也就没有发生任何数据库操作