继我最近的问题之后,我已经关闭了我们的Web应用程序保持开放的大部分连接。但是,由以下功能创建的连接保持打开状态。任何人都可以确定它为什么不关闭?为什么这个类成员打开SQL连接?
public DataTable GetSubDepartment(int deptId)
{
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(Defaults.ConnStr))
{
SqlCommand cmd = new SqlCommand("proc_getDepartmentChild", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@dptParent", deptId));
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(dt);
}
return dt;
}
*编辑* 继@ HenkHolterman的评论: 我使用SQL Server Management Studio中的活动日志来查看打开的连接。这一个被列为睡觉。所以你说什么是有道理的。有什么办法可以告诉我这是一个连接而不是一个开放的连接?
确定吗? 'using'和'Fill()'都应该关闭它。您可能正在查看Pool中的连接,与此代码无关。 – 2010-06-30 09:22:30
您可以分辨何时填充下一个表不会添加_extra_连接。 – 2010-06-30 09:32:46