我有一个程序可以更改2个表的值。消息框
显示错误,事务不回滚。 MySqlException
发现错误。但ExecuteNonQuery
返回1行
受影响的!
事务将值写入两个调用之前,但是
不是它捕获错误的地方。当我调试时,我看到了这个错误
是DateTime.Now给出'2013-11-15 12:04:21.656'
的值
变量。但是,这个变量以DateTime et格式声明
所以在程序开始时。
答案 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
}
}
}