为两个方法处理MySQL事务

本文关键字:方法 处理 MySQL 事务 两个 | 更新日期: 2023-09-27 18:06:31

我想使用MySQL事务回滚更改,如果任何方法失败。我在StackOverflow: MySql中提到了这个例子,插入最后一个ID问题仍然存在,但我的问题有点不同。

我有一个代码如下:

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;
}

我想在SaveBillDetailsSaveBillItems被调用之前调用BeginTransaction之类的东西。这两种方法都没有使用事务。我只想在上面的代码中添加事务

为两个方法处理MySQL事务

可以使用System。TransactionScope与MySQL,这取决于你的目标是哪个版本的。net和你正在使用的MySQL连接器的版本-见这篇文章

请参阅关于这个问题的讨论

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

把连接和事务的使用包装起来是非常重要的。