回滚SQL Server查询

时间:2014-03-24 20:20:26

标签: c# asp.net sql-server

我找到了一些关于回滚SQL Server查询的链接,但是在实现它时遇到了问题。由于我插入和更新的信息需要始终正确,我需要确保这是事先工作。现在,我已经有了一个try / catch块,我知道回滚会进入catch块。例如,这是我的代码:

using (SqlConnection conn5 = new SqlConnection(connString)) 
{
    try 
    {
        string query = "INSERT QUERY";
        SqlCommand cmd = new SqlCommand(query, conn5);
        // PARAMETERS

        conn5.open();
        cmd.ExecuteNonQuery();
    }
    catch 
    { 
        cmd.Rollback();
    }
}

我试过cmd.RollBack(),但它只是在我的脸上吹了。

1 个答案:

答案 0 :(得分:5)

您打开一个交易范围。除非调用Complete()方法,否则它将自动执行回滚。

using (var tScope = new TransactionScope())
using (SqlConnection conn5 = new SqlConnection(connString)) 
{
  string query = "INSERT QUERY";
  SqlCommand cmd = new SqlCommand(query, conn5);
  PARAMETERS

  conn5.open();
  cmd.ExecuteNonQuery();

  // If an exception is thrown, the call to Complete() will never be reached and the
  // changes will be rolled back.
  tScope.Complete();
}