visual studio 2010 -从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);
}

如果在循环中出现任何错误,则所有行都应该回滚。

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();
    }

是,可以使用SqlTransaction

提交和回滚错误http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx

最新更新