处理两种方法的MySQL事务

时间:2011-08-25 07:54:10

标签: c# .net mysql .net-3.5

如果任何方法失败,我想使用MySQL Transactions回滚更改。我在StackOverflow上提到了这个例子:MySql and inserting last ID problem remains,但我的问题有点不同。

我的代码如下:

private void btnSave_Click(object sender, EventArgs e)
{
    btnSave.Enabled = false;
    int result1 = SaveBillDetails();
    int result2 = SaveBillItems();

    if ((result1 == 1) && (result2 == 1))
    {
        //Update old stock
        UpdateStock.ReduceStock(Convert.ToInt32(txtBillNo.Text), Convert.ToDateTime(dtpBillDate.Text));
        MessageBox.Show("Saved", "StockApp", MessageBoxButtons.OK, MessageBoxIcon.Information);

    }
    btnSave.Enabled = true;
}

我想在调用 SaveBillDetails SaveBillItems 之前调用类似BeginTransaction的内容。这两种方法都没有使用事务。我只想在上面的代码中添加事务。

2 个答案:

答案 0 :(得分:1)

这是一个常见问题,假设您完全控制了数据访问层的设计和实现,您应该有一个创建连接或事务的方法并将其返回,然后您修改两个Save方法以接受transaction作为参数并在命令执行中使用它。

使用这样的对象来包装连接和事务的使用非常重要。

答案 1 :(得分:1)

可以将System.TransactionScope与MySQL一起使用,具体取决于您所针对的.Net版本以及您正在使用的MySQL连接器版本 - 请参阅post

另请参阅有关此question

的讨论