Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#代码插入错误时回滚_C#_Visual Studio 2010_Sql Server 2008 - Fatal编程技术网

C#代码插入错误时回滚

C#代码插入错误时回滚,c#,visual-studio-2010,sql-server-2008,C#,Visual Studio 2010,Sql Server 2008,如果发生任何错误,我将使用回滚选项插入一系列行 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 @@TRANCOUN

如果发生任何错误,我将使用回滚选项插入一系列行

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);
}
如果循环中出现任何错误,所有行都应回滚。

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


您应该调查
将XACT\u ABORT设置为ON将如何更改您的代码。谁是
事务
?对的
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();
    }