请问一下,怎样才能用delphi编写事务?谁能给个简单的例子,谢谢!

解决方案 »

  1.   

    有一个ADOConnection和两个ADOQuery,这两个ADOQuery的Connection都是ADOConnetction,事务处理:
    try
      ADOConnection.BeginTrans;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('insert into Table1 Values(1,2,3,4,5)');
      ADOQuery1.ExecSQL;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('insert into Table1 Values(1,2,3,4,5)');
      ADOQuery1.ExecSQL;
      ADOQuery2.SQL.Clear;
      ADOQuery2.SQL.Add('insert into Table1 Values(1,2,3,4,5)');
      ADOQuery2.ExecSQL;
      ADOQuery2.SQL.Clear;
      ADOQuery2.SQL.Add('insert into Table1 Values(1,2,3,4,5)');
      ADOQuery2.ExecSQL;
      ADOConnection.CommitTrans;
    except
      ADOConnection.RollbackTrans;
      ShowMessage('提交过程出错,事务已回滚');
    end;
      

  2.   

    AdoConnection.begintrans;
    try
    AdoQuery1.sql.clear
    AdoQuery1.sql.add('insert into...');
    AdoQuery1.ExecSQL;
    AdoConnection.committrans;
    except
    AdoConnection.rollbacktrans;
    end;
      
      

  3.   

    如果我不是用ADO往数据库中写数据而是执行一些过程向文本文件中写数据的话那么我该怎么写事务呢?谢谢
      

  4.   

    楼上老大都对,不过在SQL SERVER中还有一个隐含事务。也就是EXEC事务
      

  5.   

    说笑吧?事务是在SQL Server 中实现的,就算是SQL Server实现的方式是这样的:你开始的时候,它是真的往数据库的表里面添加一个实实在在的记录的,当你要回滚事务的时候,它也是实实在在地执行一个删除的任务,所谓的回滚,其实只是系统帮你执行删除的任务而已.并不是恢复原来的状态.之所以是那样,是因为你可以设置一个自动递增的标识的字段,你就知道它是不是那样的,当你回滚过一个事务以后,再次插入一个数据的时候,那个自增量的字段的数字就是段开一个数字的,断开的那个数字就是系统帮你删除的记录!
      

  6.   

    事务是数据库的概念,delphi中支持事务。但最终还是依赖于数据库来实现数据操作的同步性、一致性,实际上相当于在数据库端开辟一个缓冲区,将本次事务的操作结果记录下来,当事务中的所有步骤全部成功完成时,将缓冲区中对数据库的更改真正作用于实际的数据。至于楼主说得对文本文件写东西要考虑别的办法了。
    可以先把所有要写入的东西放在一个临时文件中,全部成功在写入实际的文本文件,仅仅是建议,仅供参考。