我做一个c/s结构的程序。程序里有个 listbox, 里面有100条数据,首先要检测表t1里面有没有跟listbox里面数据相同记录,如果有就 update 表t1,没有就将隶书体剥削里的那条数据 insert 到表t1里,程序根据listbox里面记录总数做循环,一条一条进行比较,update/insert操作,但当循环过程中有网络问题,update/insert记录就停止,listbox里剩下的数据就不能操作了,有什么方法可以要么listbox里的全部数据都能成功入库,要么遇到错误时全部数据都不入库?

解决方案 »

  1.   

    adoconnection1.BeginTrans;
    try
      //操作
      adoconnection1.CommitTrans;
    finally
      adoconnection1.RollbackTrans;
    end;
      

  2.   

    //sorry;应该是出错时回滚事务。adoconnection1.BeginTrans;
    try
      //操作
      adoconnection1.CommitTrans;
    except   //出错时回滚事务
      adoconnection1.RollbackTrans;
    end;
      

  3.   

    每条记录BeforePost的时候启动事务
    出错的时候回滚
    AfterPost的时候CommitTrans
      

  4.   

    用adoconnection1.BeginTrans;
    try
      //操作
      adoconnection1.CommitTrans;
    except   //出错时回滚事务
      adoconnection1.RollbackTrans;
    end;
    是可以的
    把所有的SQL 放在操作的位置上