我假設它使得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那樣執行它? –