应用程序未正确关闭MySql连接

本文关键字:MySql 连接 应用程序 | 更新日期: 2023-09-27 18:26:37

我的应用程序出现严重问题。它建立了很多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();
        }
    }

出于某种原因,它没有关闭任何这些连接,当我不断刷新时,它会在服务器上建立连接,一旦达到限制,应用程序就会崩溃。应用程序关闭时,所有连接都将关闭。

应用程序未正确关闭MySql连接

试试这个:

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

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

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

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

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

请确保先关闭然后处置读卡器、命令和连接对象!

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

而CCD_ 4关键字是处理这种场景的正确方法。

只需先关闭连接,然后调用dispose。。。

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