【发布时间】:2012-03-07 01:07:03
【问题描述】:
在提交事务之前处理分配给事务的命令是否有效?我自己测试了以下代码,它似乎运行良好,但这是一个相当小的例子,所以如果有人肯定知道,我正在寻找确认。
internal static void TestTransaction()
{
try
{
Program.dbConnection.Open();
using (SqlTransaction transaction = Program.dbConnection.BeginTransaction())
{
Boolean doRollback = false;
for (int i = 0; i < 10; i++)
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO [testdb].[dbo].[transactiontest] (testvalcol) VALUES (@index)", Program.dbConnection, transaction))
{
cmd.Parameters.AddWithValue("@index", i);
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException)
{
doRollback = true;
break;
}
}
}
if (doRollback)
transaction.Rollback();
else
transaction.Commit();
}
}
finally
{
Program.dbConnection.Close();
}
}
【问题讨论】:
-
您只是在处理 Command 对象,因为它包裹在 using(){} 周围事务与命令以及连接相关联..那么您将遇到灾难性错误..
标签: c# .net sql-server-2008 tsql