使用的Tquery。 add 和ExecSQL方式对数据库操作的。
使用了BDE的SHARED NOAUTOCOMMIT也不起作用。
用事务控制没有试,不太方便感觉(涉及到多个数据库多个表)。
就希望实现pb的方式,一开始连接数据库的时候设置一下autocommit = false,以后没个sql只要commit和rollback就可以了,方便的很。 在delphi中怎么实现这个目的。

解决方案 »

  1.   

    Database1.StartTransaction;
      try
      //...
        database1.Commit;
      except
        database1.Rollback;
      end;
      

  2.   


    >>>用BDE和odbc方式连接的oracle,究竟如何才能实现数据的不自动提交。 procedure TForm1.BitBtn10Click(Sender: TObject);
    begin   用TTable也行===============================================
      Table1.CachedUpdates:=True; //設緩存更新就不會自動提交!!!
      Table1.Append;
      .....
      Table1.Post;  //只是提交數據到緩存  Table1.ApplyUpdates; //方式一.提交到數據庫, 如需要可用事務控制!!!!
      Table1.Database.ApplyUpdates(Table1);//方式二.提交到數據庫
    =======================================
    用TQuery也行
      Query2.RequestLive:=True;  Query2.CachedUpdates:=True;
      Query2.Append;
      .....
      Query2.Post;  //  Query2.ApplyUpdates;
      Query2.Database.ApplyUpdates(Query2);end;也可以配合如: jinjazz(近身剪(N-P攻略)) 提出的事務控制@!!!
      

  3.   

    事务实在不太好处理,因为需要连接两个数据库和多个表,要执行若干个操作。得嵌套了。出了事务没有其他的方法了吗?不能是连接oracle的时候默认就是不提交的,执行一个commit后才提交的吗?
      

  4.   

    还有BDE的SHARED AUTOCOMMIT是什么意思呢?用在何处