我的应用程序存在严重问题。它构建了许多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();
}
}
由于某些原因,它没有关闭任何这些连接,当我不断刷新它在服务器上构建连接,一旦限制被命中应用程序崩溃。关闭应用时,所有连接都将关闭。
答案 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();
}