0

我希望在示例 c# 桌面应用程序 1 按钮插入数据中进行某种延迟回滚(不是批量回滚),另一个将其回滚

我尝试了以下但它不工作

error:  The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION.

.

private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection(ConnectionString);
        //conn = new SqlConnection(ConnectionString);
        conn.Open();
        try
        {
            //tran = conn.BeginTransaction("Transaction1");
            SqlCommand cmd = new SqlCommand("begin transaction", conn);
            SqlCommand cmd1 = new SqlCommand("insert into employee values ('6','aaaaaa','111')", conn);
            cmd.ExecuteNonQuery();
            cmd1.ExecuteNonQuery();
            conn.Close();

        }
        catch { }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection(ConnectionString);
        conn.Open();
        SqlCommand cmd2 = new SqlCommand("rollback transaction", conn);
        cmd2.ExecuteNonQuery();
        conn.Close();
    }

我正在尝试的甚至可能吗?还是我只是走错路了?

4

1 回答 1

0

优。

从技术上讲,您在 button2_Click 中拥有的所有内容都是“新的”,因此与原始的“开始交易”语句没有“联系”。

但我真的不认为你想做手动的“开始事务”和“回滚事务”语句。

我~~想~~你想尝试使这个变量:

**tran** = conn.BeginTransaction("Transaction1");

这个“tran”变量是一个成员变量,其范围大于一个命令按钮。(假设您将其设为成员变量并将其重命名为 _transaction)

然后要么打电话

_transaction.Rollback();

或者

_transaction.Commit()

但是哇。那是片状。我只是给你一个想法,如果你真的决心这样做。

于 2013-05-01T20:40:30.133 回答