c# - 在新连接中提交事务

标签 c# mysql sql

给出以下代码:

        var Connection = new MySqlConnection("***");
        MySqlCommand cmd1 = new MySqlCommand("query1", Connection);
        MySqlCommand cmd2 = new MySqlCommand("query2", Connection);
        Connection.Open();
        var transaction = Connection.BeginTransaction();
        cmd1.Transaction = transaction;
        cmd2.Transaction = transaction;
        var result1 = cmd1.ExecuteNonQuery();
        Connection.Close();
        // Connection with MySql lost: Initiate new Connection
        Connection = new MySqlConnection("***");
        Connection.Open();
        cmd2.Connection = Connection;
        var result2 = cmd2.ExecuteNonQuery();
        //transaction.Commit();

如果我尝试在最后一行提交事务,则会收到“连接必须有效且打开才能提交事务”错误,因为事务仍指向旧连接。

在这种情况下提交事务的最佳选择是什么(在事务中间初始化连接)?

我应该从头开始重试吗?

最佳答案

一旦连接丢失,交易就会结束。您不能拥有跨越多个连接的事务。在关闭连接之前,您必须提交或回滚。

您可以为多个语句重复使用同一个连接,只要不关闭它即可。当您打开新连接时,您也必须启动新事务。

关于c# - 在新连接中提交事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43498346/

相关文章:

mysql - 存储订单项目和项目可以有子项目的不同方式是什么?

mysql - MYSQL中的这个算术运算

c# - LINQ2SQL中如何获取Context.SubmitChanges生成的SQL?

c# - Xamarin:java.security.cert.CertPathValidatorException:找不到证书路径的信任 anchor

c# - 如何将 GridView 绑定(bind)到复杂对象

Mysql更改float默认值的默认值

sql - 仅使用时间戳识别数据中的数据间隙

C# 组件事件?

c# - ASP.NET Web API Authentication.GetExternalLoginInfoAsync 总是返回 null

mysql - 父表中的单个主键 多个外键 hibernate 子表