ObjectDataSource加DataReader会出现超出连接池数量的问题吗?
我使用ObjectDataSource,其中的Select方法是一个返回DataReader的函数,函数中使用的是SqlHelper的函数。代码如下:
public static IDataReader GetIndexTitleByCategory(string strCategory)
{
string strSqlSelect = "select top 6 title,id,pubtime, datediff(y, pubtime, getdate()) as newdatedifferent from content where CategoryId=@categoryId order by [id] desc ";
SqlParameter[] p = {
SqlHelper.MakeInParam( "@categoryid ",SqlDbType.BigInt,8,int.Parse(strCategory ))
};
IDataReader idr = SqlHelper.ExecuteReader(SqlConnectionString.gtConnectionString,
CommandType.Text, strSqlSelect, p);
return idr;
}
因为要返回IDataReader的原因,所以没有用using,idr.Close()等函数。如果跟ObjectDataSource会占用连接吗?如果事占用,有什么方法可以释放呢?
------解决方案--------------------DbCommand.ExecuteReader (CommandBehavior) ,在你关闭DbDataRead的时候,就能自动关闭数据库连接。
另外象GirdView,DataGrid这样的控件在绑定也能自动关闭DbDataRead的连接