日期:2014-05-18  浏览次数:20470 次

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的连接