系統用SocketConnection做遠程連結,在客戶端上用clientdataset對兩個sql表做insert操作,只要有一個表插入不成功,就清除兩個表的插入數據,請問用事務怎麼寫?

解决方案 »

  1.   


      ADOConnection1.BeginTrans   ;   
          try   
              ADOCommand1.CommandText:='insert into test1(id,name) values(:number,:char)';   
              ADOCommand1.Parameters.Items[0].Value:=1;   
              ADOCommand1.Parameters.Items[1].Value:='a';   
              ADOCommand1.Execute;   
        
              ADOCommand1.CommandText:='insert into test1(id,name) values(:number,:char)';   
              ADOCommand1.Parameters.Items[0].Value:=2;   
              ADOCommand1.Parameters.Items[1].Value:='b';   
              ADOCommand1.Execute;    
              ADOConnection1.CommitTrans;   
          except   
              ADOConnection1.RollbackTrans;   
          end;   原理基本与这类似  try一下 有异常就回滚
      

  2.   

    但是SocketConnection沒有begintrans.
      

  3.   

    你怎么用SocketConnection操作数据库的?
      

  4.   

    http://topic.csdn.net/t/20060928/20/5055365.html 给你个帖子看看吧
      

  5.   

    那你自己做一个事务好了,设一个全局变量,比如说A,初始值为0,朝主表插入完数据后把A设为1,朝明细表插完数据后设为2,
    在插入主表和明细后分别判断A的值,如果不是1,或者2,就删除刚才插入的数据。大体思路是这样,你自己再考虑考虑
      

  6.   

    我再試一下.
    謝謝yf520gn.