MySQL Connector连接重用

时间:2011-02-11 22:42:22

标签: c# mysql connection connector

我有一个带有MySqlConnection对象的类,我在我的应用程序中重复使用

public class MySqlWrapper : IDbConnection
{
    MySqlConnection _connection = new MySqlConnection();
}

我有几种使用此方法的方法

public void UseDB()
{
    _connection.Open();  
    // Do highly important stuff  
    _connection.Close();
}

Open()调用失败,因为连接已经打开 是的,我的所有Open()都有匹配的Close()

现在我找到的解决方案是每次使用它时克隆连接

    MySqlConnection connClone = _connection.Clone();
    connClone.Open();

出于某种原因,这段代码闻起来很糟糕。使用安全吗?还有其他方法我不知道处理开/关吗?

2 个答案:

答案 0 :(得分:3)

也许考虑重构一下这个类,并在每个方法的每次使用中实例化你的MySqlConnection?

还要考虑C#的using声明:

using (var myConn = new MySqlConnection())
{      
    myConn.Open();
    //do some work.
}
//the MySqlConnection is now out of scope.

如果这不是一个可行的选项/重构,那么考虑将.Open().Close()包装在他们自己的try catch块中。

答案 1 :(得分:3)

您可以使用_connection.ConnectionState == ConnectionState.Open检查是否已打开连接。

我建议你创建类实现IDisposable并在dispose方法中配置MySqlConnection并初始化构造函数内的连接(或初始化方法)。然后,您可以使用ConnectionState确定在运行查询之前是否需要重新初始化连接。

您应该在每个查询之间进行连接/断开连接,这将非常慢。