SqlConnection   conn   =   ...; 
conn.Open(); 
SqlCommand   cmd   =   conn.CreateCommand(); 
SqlTransaction   tran   =   conn.BeginTransaction(); 
cmd.Transaction   =   tran; 
try 

cmd.CommandText   =   "insert   into   a   (a)   vlalues   ( "a ") "; 
cmd.ExecuteNonQuery(); 
... 
cmd.CommandText   =   "insert   into   b   (b)   vlalues   ( "b ") "; 
cmd.ExecuteNonQuery(); 
... 

catch   (SqlException) 

    tran.Rollback(); 
    return; 

finally 

    conn.Close(); 
} tran.Commit(); 请问以上代码如果异常,会从头开始回滚么?

解决方案 »

  1.   


    cmd.CommandText   =   "insert   into   a   (a)   vlalues   ( "a ") "; 
    cmd.ExecuteNonQuery(); 
    ... 
    cmd.CommandText   =   "insert   into   b   (b)   vlalues   ( "b ") "; 
    cmd.ExecuteNonQuery(); 
    ... 
    tran.Commit();} 
      

  2.   

    tran.Commit(); 
    与在try最后