oracle命令执行后如何调用回滚?

时间:2014-03-26 23:34:26

标签: c# winforms oracle

我有一个回滚按钮,我喜欢使用它,但我的回滚按钮不起作用如何...我怎样才能有效地使用回滚; ?

string myCommand ="Insert into....";
Conn.Open();
OracleCommand cmd = new OracleCommand(myCommand, Conn);
cmd.ExecuteScalar();

private void button_Click(object sender, EventArgs e)
{
    rollback;
}

2 个答案:

答案 0 :(得分:1)

您必须定义一个事务对象,您可以在那里提交和回滚。应该是这样的:

OracleTransaction tx;

string myCommand ="Insert into....";
Conn.Open();
tx = Conn.BeginTransaction();
OracleCommand cmd = new OracleCommand(myCommand, Conn);
cmd.ExecuteScalar();

private void Commit_button_Click(object sender, EventArgs e)
{
    tx.Commit();
}

private void Rollback_button_Click(object sender, EventArgs e)
{
    tx.Rollback();
}

答案 1 :(得分:-3)

对于“Insert into ....”,只需为回滚执行“删除....”。

更好的模式是保留命令列表。每个Command都有一个DoSql和UndoSql属性。这允许回滚(UndoSql)和重做(DoSql)。

http://en.wikipedia.org/wiki/Compensating_transaction的更多信息。