繁体   English   中英

MySQL Connector连接重用

[英]MySQL Connector connection reuse

我有一个带有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();

由于某种原因,此代码段闻到了不好的代码。 使用安全吗? 还有另一种我不知道要处理打开/关闭的方法吗?

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

还要考虑C#的using语句:

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

如果这不是可行的选择/重构,则考虑将.Open().Close()都包装在自己的try catch块中。

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

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

应该每个查询,这将是非常缓慢之间的连接/断开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM