SqlConnection myConn;
...
SqlTransation myTrans = myConn.BeginTransaction;
...
 try
 {
    myCommand.CommandText = ...;
    myCommand.ExecuteNonQuery();
    ...
    myTrans.Commit();
 }
 catch
 {
    try
    {
  myTrans.Rollback();
  return;
    }
    catch
    {
  return;
    }
 }if(...)
{
//在这里我需要回滚myTrans,但是因为已经myTrans.Commit();所以不能直接myTrans.Rollback();
}不一定非要这样子写, 只要能有办法达到这个效果就行

解决方案 »

  1.   

    楼主思路有问题;该改成这样SqlConnection myConn;
    ...
    SqlTransation myTrans = myConn.BeginTransaction;
    ...
     try
     {
        myCommand.CommandText = ...;
        myCommand.ExecuteNonQuery();
        ...
        if(...)
        {
         //在这里我需要回滚myTrans,但是因为已经myTrans.Commit();所以不能直接myTrans.Rollback ();
        }else{
           myTrans.Commit();
       }
     }
     catch
     {
        try
        {
      myTrans.Rollback();
      return;
        }
        catch
        {
      return;
        }
     }