MySqlConnection没有在`using`语句内关闭

时间:2019-04-12 09:49:24

标签: c# mysql

我正在开发使用MySql的MVC应用程序,问题是我收到错误too many connections。这使我感到困惑,因为我将连接初始化程序包装在using内,它应该自动处理它。

代码示例:

using(MySqlConnection con = new MySqlConnection(connString))
{
    con.Open();
    using(MySqlCommand cmd = new MySqlCommand(...))
    {
        ...
    }
}

它会导致我出现此错误的原因是什么?怎么办?

3 个答案:

答案 0 :(得分:2)

using语句显式调用Dispose。并不是因为它使连接保持打开状态。默认情况下和设计合理地处置了它们。

尝试在连接字符串中添加“ Pooling = false”。或致电ClearPool()。

答案 1 :(得分:0)

我认为您使用using忽略了con.Open()语句。它将多次打开连接。

你可以试试吗,

using(MySqlConnection con = new MySqlConnection(connString))
{
  using(MySqlCommand cmd = new MySqlCommand(...))
  {
     ...
  }
}

或,

using(MySqlConnection con = new MySqlConnection(connString)) // --> First connection opening here
{
con.Open(); // --> And second connection opening here.
  using(MySqlCommand cmd = new MySqlCommand(...))
  {
     ...
  }
con.Close(); // --> Second is closing here
} // --> First one is closing here

答案 2 :(得分:0)

您需要检查连接状态,如果连接状态为打开,则将其关闭,然后将其打开。您已经建立连接时尝试创建新的连接。因此,您会遇到运行时连接错误。

  if (con.State==ConnectionState.Open)
  {
      con.Close();
  }
      con.Open();
相关问题