应用程序未正确关闭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();
}
}
出于某种原因,它没有关闭任何这些连接,当我不断刷新时,它会在服务器上建立连接,一旦达到限制,应用程序就会崩溃。应用程序关闭时,所有连接都将关闭。
试试这个:
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();
}