比如我用adoquery,后台是sql server ,当用adoquery进行数据更新时,请问能否支持事务!
如下:
   adoquery.close;
   adoquery.sql.clear;
   adoquery.sql.add('update 语句1');
   adoquery.execsql;
   
   adoquery.close;
   adoquery.sql.clear;
   adoquery.sql.add('update 语句2');
   adoquery.execsql;
我如果这样操作数据库的话,那么那后台数据库的机器发生故障时,那么我如果更新一半数据,另一半
还没有更新,那么我的程序就没有事务性了。请问在不用sql server的存储过程时,能否做到事务支持呢?

解决方案 »

  1.   

    偶一般这样
    with adoquery do
    begin
      close;
      sql.text:='BEGIN TRANSACTION'
        +#13
        +'update .....'
        +#13
        +'update .....'
        +#13
        +'COMMIT TRANSACTION';
      ExecSQL;
    end;
      

  2.   

    ADOConnection.BeginTrans;
    try
       adoquery.close;
       adoquery.sql.clear;
       adoquery.sql.add('update 语句1');
       adoquery.execsql;
       
       adoquery.close;
       adoquery.sql.clear;
       adoquery.sql.add('update 语句2');
       adoquery.execsql;
       ADOConnection.CommitTrans;
    except
       ADOConnection1.RollbackTrans;
    end;
      

  3.   

    ADOConnection.BeginTrans;
    Try
      写你要更新的语名
      ......
      ADOConnection.CommitTrans;
    except
      ADOConnection.RollbackTrans;
    end;