延迟回滚(ado.net)不工作
本文关键字:工作 net ado 延迟 | 更新日期: 2023-09-27 18:11:37
我希望在示例c#桌面应用程序中进行某种延迟回滚(不是批量回滚)一个按钮插入数据,另一个按钮回滚数据
我尝试了以下操作,但不工作
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();
}
我所尝试的是可能的吗?还是我用错了方向?
少年。
从技术上讲,你在button2_Click中的所有内容都是"new",因此没有"tie back"到原始的"begin transaction"语句。
但是我真的不认为你想做手动的"开始事务"answers"回滚事务"语句。
我~~认为~~你想试着让这个变量:
**tran** = conn.BeginTransaction("Transaction1");
this "tran"变量是作用域大于一个命令按钮的成员变量。(让我们假设你把它作为一个成员变量,并重命名为_transaction)
,然后调用
_transaction.Rollback();
或
_transaction.Commit()
但哇。这太不靠谱了。我只是给你一个想法,如果你真的想做的话。