【发布时间】:2015-03-08 10:32:59
【问题描述】:
我编写了一个函数来执行 MySQL 语句。在这个函数中,我给出一个语句并取回 MySqlDataReader,但问题是我的函数没有关闭连接。使用程序片刻后,由于无法打开新连接而崩溃。这是我尝试打开新连接时遇到的错误:
连接错误:超时。超时时间已过 从池中获取连接。这可能已经发生 因为所有池连接都在使用中并且最大池大小是 到达。
我的代码如下所示: MySQL 类:
class mySql
{
string cs = "server=123.123.123.123;" +
"uid=abcabc;" +
"pwd=123456;" +
"database=overflow_test;";
private MySqlConnection conn_f() // create a Connection
{
MySql.Data.MySqlClient.MySqlConnection conn;
conn = new MySql.Data.MySqlClient.MySqlConnection();
conn.ConnectionString = cs;
try
{
conn.Open();
return conn;
}
catch
{
return null;
}
}
public MySqlDataReader CMD_f(string comand) //execute SQL Command
{
MySql.Data.MySqlClient.MySqlCommand cmd;
cmd = new MySql.Data.MySqlClient.MySqlCommand();
MySqlConnection conn = conn_f();
cmd.Connection = conn;
cmd.CommandText = comand;
cmd.Prepare();
rdr = cmd.ExecuteReader();
return rdr;
}
}
以及我如何使用它的示例主类
class main{
mySql DB = new mySql();
public void main(){
MySqlDataReader rdr = DB.CMD_f("SELECT * FROM tbl_kategorie");
int i = 0;
while (rdr.Read())
{
string str = rdr.GetString(1);
Console.WriteLine(str);
}
}
有人有解决问题的想法。 真诚的问候 LFS96 (Fabian Harmsen)
【问题讨论】: