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

使用SqlDataReader关闭连接的问题
我用一个子程序生成SqlDataReader并返回
由于要使用返回的SqlDataReader所以不能关闭连接(关闭的话SqlDataReader用不了)
这样经常导致池连接错误
把池连接数增大可以解决
但最好是能及时释放资源
怎么做好呢

------解决方案--------------------
SqlDataReader dr = cmd.ExeceReader();
dr.Close();

return dr;
这样可以啊``我都是这样写的啊
------解决方案--------------------
加上一句就可以关闭了
SqlDataReader=command.ExecuteReader(CommandBehavior.CloseConnection)
------解决方案--------------------
把返回的SqlDataReader赋值给一个新的SqlDataReader,然后关闭那个赋值后的类里面那个也就跟着关闭的了。
------解决方案--------------------
SqlDataReader dr = cmd.ExeceReader();
dr.Close();

return dr;
我也是这样写
把Close()写在return 的前面,不然return 后的代码不执行
------解决方案--------------------
CommandBehavior.CloseConnection
------解决方案--------------------
sqlDataReader是长连接的,如果要使用它是不能股关闭的,如果使用的过多建议使用DataSet,可以实现相同的功能,不需要占用那么多的连接。
SqlDataReader是顺序读取数据的,它的好处是对数据的Select操作的时候效率比较高吧。不过如果是作为绑定数据源的话不建议使用,最好可以将数据读取到其他的ICollection类型的变量中。
------解决方案--------------------
SqlDataReader=command.ExecuteReader(CommandBehavior.CloseConnection)

------解决方案--------------------
...最简单,在你用完时关闭就是啦。。不管调用了返回READER的函数。
------解决方案--------------------
SqlDataReader=command.ExecuteReader(CommandBehavior.CloseConnection)
正解,连接池会在关闭sqldatareader对象后自动关闭connection对象
------解决方案--------------------
方法中用SqlDataReader=command.ExecuteReader(CommandBehavior.CloseConnection)返回DataReader,并不用关闭DataReader;使用DataReader后直接关闭DataReader,程序会自动关闭connection!以此达到楼主目的