在C#中需要做一个UPDATE处理,现不知道其中列表中总共有多少条记录需要更新,当在执行过程中间发生了更新错误,如何让前面和后面所有的数据都回滚为更新之前的状态?
如:
需更新的数据为10行,
int result =command.ExecuteNonQuery();当result=5时出现更新错误(错误原因暂不深究),后面及前面的所有数据都回滚。
在程序中如何写代码?
如果用Try{}catch{}语句如何返回这个错误?

解决方案 »

  1.   

    你把它放在事务里面 
    using(//事务)
    {
     try
     {
        int result =command.ExecuteNonQuery();
        trans.Commit();  //提交事务
     }
     catch()
     {
        trans.Rollback(); //回滚事务
     }
    }
      

  2.   


                using (SqlCommand cmd = con.CreateCommand())
                {
                    SqlTransaction tran = con.BeginTransaction();
                    cmd.Transaction = tran;
                    try
                    {
                        foreach (string item in strSQL)
                        {
                            cmd.CommandText = item;
                            cmd.ExecuteNonQuery();                    }                    tran.Commit();//如果都成功那么提交事物                }
                    catch (Exception ex)
                    {
                        index = -1;
                        //throw new Exception(ex.Message);
                        tran.Rollback();
                    }                //index = com.ExecuteNonQuery();
                }