【发布时间】:2011-04-12 14:57:47
【问题描述】:
我有一个使用 mysql 作为数据库的 ASP.NET 网站。我注意到当我显示完整的进程列表时有很多连接“休眠”。今天我们遇到了一些错误“从池中获取连接之前超时时间已过。”。如果进程正在“休眠”,那么它们是否仍然从代码中打开?代码中的所有 MySQL 连接都在 using 语句中。我可以依靠 using 语句正确关闭连接吗?
编辑代码: 我正在使用这个类来创建我的连接:
public class DbAccess
{
public static MySqlConnection OpenConnection(string connectionStringName)
{
string connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
if (string.IsNullOrEmpty(connectionString))
{
throw new ArgumentException("Connection string " + connectionStringName + " does not exist.");
}
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
return connection;
}
}
那我这样称呼它:
using (MySqlConnection connection = DbAccess.OpenConnection(connectionString))
{
//Code Here
}
一些附加信息:重置 MySql 并没有使错误消失,但重置我的应用程序池确实..
【问题讨论】:
-
你能展示一下数据库访问的实际代码吗?