我希望在示例c#desktop app中进行某种延迟回滚(不是批处理) 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();
}
我正在尝试甚至可能吗?或者我只是以错误的方式去做?
答案 0 :(得分:0)
Youch。
技术上,你在button2_Click中拥有的一切都是“新的”,所以没有“绑回”原始的“开始交易”声明。
但我真的不认为你想做手册“开始交易”和“回滚交易”的陈述。
我想~~你想尝试制作这个变量:
**tran** = conn.BeginTransaction("Transaction1");
这个“tran”变量是一个成员变量,其范围大于一个命令按钮。 (假设您将其设为成员变量并将其重命名为_transaction)
然后调用
_transaction.Rollback();
或
_transaction.Commit()
但哇。那太好了。如果你真的喜欢这样做,我只是想给你一个想法。