我假设它使得t他整个事情失败或成功?为什么不使用相同的连接和事务,然后在最后提交事务。这就是交易的目的。有关更多示例和详细信息,请参阅SqlTransaction documentation。
private static void Demo1()
{
SqlConnection db = new SqlConnection("connstringhere");
SqlTransaction transaction;
db.Open();
transaction = db.BeginTransaction();
try
{
var updateResultNums = new SqlCommand("UPDATE", db, transaction).ExecuteNonQuery();
var deleteResultNums = new SqlCommand("DELETE", db, transaction).ExecuteNonQuery();
var reader = new SqlCommand("SELECT", db, transaction).ExecuteReader();
while (reader.Read())
{
// read
// alternatively see http://stackoverflow.com/a/13870892/1260204 if you really want a data table from the SqlCommand
}
transaction.Commit();
}
catch (SqlException sqlError)
{
transaction.Rollback();
// do something to handle error
}
finally
{
db.Close(); //close connection
db.Dispose(); //dispose connection
transaction.Dispose();
}
}
为什么你需要将它们作为1脚本运行?你只需要受影响的'INSERT','UPDATE'和'DELETE'的行数? –
为什么要在同一个语句中运行它们?使用SqlTransaction,在最后一个语句执行后提交事务。 – Igor
我需要所有人都在一个,因为那不是我生成脚本的人,有没有办法像Microsoft SQL Server Management Studio那样执行它? –