2

如果发生任何错误,我将插入一系列带有回滚选项的行。

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

如果循环中发生任何错误,所有行都应该回滚。

4

2 回答 2

1

是的,您可以使用 SqlTransaction 提交和回滚错误

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx

于 2013-01-19T07:45:24.280 回答
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();
    }
于 2013-01-19T07:46:21.917 回答