应用没有正确关闭MySql连接

时间:2015-12-14 09:50:08

标签: c# mysql

我的应用程序存在严重问题。它构建了许多MySql连接,然后导致崩溃。

我构建了这样的每个方法:

MySqlConnection connect = new MySqlConnection(
        local_connection_string
        ); //this is global variable.

    protected void sample()
    {
        try
        {
            connect.Open();
            MySqlCommand query = new MySqlCommand(
                "here some mysql command"
                , connect);
            query.ExecuteNonQuery();
        }
        catch
        {

        }
        finally
        {
            connect.Dispose();
            connect.Close();
        }
    }

由于某些原因,它没有关闭任何这些连接,当我不断刷新它在服务器上构建连接,一旦限制被命中应用程序崩溃。关闭应用时,所有连接都将关闭。

4 个答案:

答案 0 :(得分:2)

试试这个:

using(MySqlConnection conn = new MySqlConnetion(local_connection_string)
{
    conn.open();
    MySqlCommand query = new MySqlCommand(
                "here some mysql command"
                , connect);
            query.ExecuteNonQuery();

}

使用(资源){}:IDisposable资源使用的正确方法 可能需要添加:Application.ApplicationExit事件与MySqlConnection.ClearAllPools()

答案 1 :(得分:1)

  

要确保始终关闭连接,请打开using块内部的连接,如以下代码片段所示。这样做可确保在代码退出块时自动关闭连接。

using (MySqlConnection connection = new MySqlConnection(connectionString))
{
    connection.Open();
    // Do work here; connection closed on following line.
}

答案 2 :(得分:1)

MySQL计数器部分使用连接池,并且在您调用close时不关闭,而是将其放入连接池中!

确保先关闭然后处理Reader,Command和Connection对象!

您可以使用ConnectionString参数"Pooling=false"或静态方法MySqlConnection.ClearPool(connection)MySqlConnection.ClearAllPools()

Using关键字是使用此类场景的正确方法。

答案 3 :(得分:0)

在调用dispose之前先关闭连接......

        finally
        {
            connect.Close();
            connect.Dispose();
        }