2013-01-19 38 views
2

如果發生任何錯誤,我將插入一系列帶回滾選項的行。從C#代碼插入錯誤回滾

BEGIN TRY 
BEGIN TRANSACTION 

    INSERT INTO myTable (myColumns ...) VALUES (myValues ...); 
    INSERT INTO myTable (myColumns ...) VALUES (myValues ...); 


COMMIT TRAN -- Transaction Success! 
END TRY 
BEGIN CATCH 
IF @@TRANCOUNT > 0 
    ROLLBACK TRAN --RollBack 

END CATCH 

在C#中,我插入for循環的行。這裏也有可能達到同樣的功能嗎?

foreach(string lst in str[]) 
{ 
    //insert query 
    dbl.ExecSqlNonQuery("sp_tbltest", CommandType.StoredProcedure); 
} 

如果在循環中發生任何錯誤,所有行都應回滾。

+0

您應該調查XACT_ABORT ON'將如何'SET更改代碼的錯誤回滾。 –

回答

1
try 
    {    
     using (TransactionScope scope = new TransactionScope()) 
     { 
      //// create the connection 
      using (SqlConnection connection1 = new SqlConnection(connectString1)) 
      { 
       //// open the connection 
       connection1.Open(); 

       foreach(string lst in str[]) 
       { 
        //insert query 
        connection1.ExecSqlNonQuery("sp_tbltest", CommandType.StoredProcedure); 
       }      
      } 

      scope.Complete(); 

     } 

    } 
    catch (Exception) 
    { 
     scope.Rollback(); 
    } 
+0

誰是'交易'?正確。 –