C# 事务处理不起作用

C# 事务处理不起作用,c#,mysql,C#,Mysql,我有一个程序,在其中我更改了两个表的值。消息框 显示错误并且事务不回滚MySqlException捕获错误。但是ExecuteNonQuery返回1行 受影响 事务在调用之前将值写入两个调用,但 而不是它捕捉到错误的地方。当我调试时,我发现这个错误 是DateTime。现在将值'2013-11-15 12:04:21.656'提供给 变量但是,此变量以DateTime et的格式声明 所以在程序的开始 在我看来,您没有设置命令的事务: cmd.Transaction = trans; (需要在

我有一个程序,在其中我更改了两个表的值。消息框 显示错误并且事务不回滚
MySqlException
捕获错误。但是
ExecuteNonQuery
返回1行 受影响

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


在我看来,您没有设置命令的事务:

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

--------->>>>>>>>>>>>“您的SQL语法中有一个错误;”是的,我不知道它是怎样的,因为它是不可预测的日期格式。但是在mysqlexception捕捉到错误后,问题事务不会回滚。我对离题原因一无所知。这是一个有充分解释的问题。然而,在SQLFIDLE上工作了2天后,我解决了@Mitch小麦提到的问题。它起作用了。我会分享解决方案。我添加了行,但值在回滚之前在两个表中更改,而不是在最后一个表中。日期时间是否正常。现在将值指定为“2013-11-15 12:04:21.656”?对于一个定义为日期时间格式的变量?@IsmailGunes你能重新表述这个句子的第一部分吗?我无法解析你是什么saying@IsmailGunes关于第二部分:datetime是一个数字,而不是字符串。我不清楚您在哪里将其视为字符串,因此我无法进行评论。在我的链接中,正如您所看到的,我对写入2个表进行了一次回滚,通常必须回滚。导致交易结束的错误是分配了“2013-11-15 12:04:21.656”的值2013-11-15 12:04:21.656'这是DateTime的格式。现在还是'2013-11-15 12:04:21'?这就像你的示例我的交易,但没有使用“使用”,但我会尝试现在使用。