交易不起作用

时间:2013-11-15 11:45:02

标签: c# mysql

我有一个程序可以更改2个表的值。消息框    显示错误,事务不回滚。 MySqlException发现错误。但ExecuteNonQuery返回1行    受影响的!

事务将值写入两个调用之前,但是    不是它捕获错误的地方。当我调试时,我看到了这个错误    是DateTime.Now给出'2013-11-15 12:04:21.656'的值    变量。但是,这个变量以DateTime et格式声明    所以在程序开始时。

Here is my code

1 个答案:

答案 0 :(得分:1)

在我看来,你没有设置命令的交易:

cmd.Transaction = trans;

(需要在每个命令上 - 是的,这很乏味)

此外,您可能希望确保只有一个地方可以提交/回滚,以避免出现问题。例如:

using (var conn = new MySqlConnection(PublicVariables.cs))
{
    conn.Open();
    using(var tran = conn.BeginTransaction())
    {
        try
        {
            // ...command the first
            // ...command the second
            // ...command the third
            trans.Commit();
        }
        catch (Exception ex)
        {
            trans.Rollback();
            ShowMessage(ex.Message); // etc
        }
    }
}