在新连接中提交事务

时间:2017-04-19 14:17:07

标签: 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();

如果我尝试在最后一行提交事务,我得到" Connection必须有效并且打开以提交事务" 错误,因为事务仍然指向旧连接。

在此方案中提交事务的最佳选择是什么(在事务中间初始化连接)?

我应该从一开始就重试吗?

1 个答案:

答案 0 :(得分:0)

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

您可以为多个语句重复使用相同的连接,只要您不关闭它即可。当您打开新连接时,您也必须开始新的交易。