如果发生任何错误,我会插入一系列具有回滚选项的行。
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 :(得分:1)
是, 您可以使用SqlTransaction提交和回滚错误
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx
答案 1 :(得分: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();
}