我发现我遇到了一些网站连接池问题,并且正在追踪它们。我知道要寻找的一件事是确保所有 SQLDataReader 都已关闭,但我已经完成并确保它们已关闭。我脑海中突然出现的一个问题是关于返回 SQLDataReaders 的方法以及它们如何关闭(或不关闭)。
所以这就是我如何设置东西和一些示例方法:
public static SqlDataReader ExecuteReader(SqlCommand cmd)
{
SqlConnection c = new SqlConnection(Properties.Settings.Default.DatabaseConn);
cmd.Connection = c;
c.Open();
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
然后我有一个使用'ExecuteReader()'的方法
public static SqlDataReader GetData()
{
SqlCommand Query = new SqlCommand("select * from SomeTable");
return ExecuteReader(Query);
}
现在说我有另一种调用“GetData”的方法。我显然简化了事情。
public static SqlDataReader GetMoreData()
{
return GetData;
}
所以我的问题是,当我这样调用“GetMoreData”时
SqlDataReader dr = GetMoreData();
//do some stuff with 'dr'
dr.close();
我的所有SqlDataReaders 和连接都正确关闭了吗?
谢谢!