高手们帮忙!关于DataReader未关闭的问题。

misterhuxiaocheng 2012-05-17 11:20:11
我的网站,只要访问量稍微大一点,就总出现DataReader未关闭的错误,不回收进程的话,过个几分钟,它自己有会好。请问是啥问题呢,我仔细检查了N遍代码,所有的DataReader都有Close(),数据库连接数也是设的最大,不知道为什么原因。请回答一些针对问题实际点的解决方案。不要说一些让我换成DataSet之类的无用回答,我只想知道当前情况下该怎么解决掉。谢谢了!
...全文
195 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
游北亮 2012-05-18
  • 打赏
  • 举报
回复
用using等效于try finally去关闭
游北亮 2012-05-18
  • 打赏
  • 举报
回复
静态方法没有问题
但是静态成员就会有并发问题
比如SqlConnection、SqlCommand之类的,避免写成static,除非你能保证它们永远不会线程冲突

另外,如7楼所说,如果出现异常,你的Close指令可能执行不到,所以要try,在finally里关闭
Reader和连接

[Quote=引用 5 楼 的回复:]
引用 4 楼 的回复:
你可能使用了static类型导致的并发冲突,你可以去掉static关键字

咦··还真是··我的DBHelper是静态方法为主
老孟啊··这种DBHelper经常调用的类,写成非静态的比较好咯?
[/Quote]
anzhiqiang_touzi 2012-05-18
  • 打赏
  • 举报
回复
估计你的关闭是直接关闭的

关闭方式



try
{
//查询数据
}
catch
{
throw;
}
finally
{
//请在这里关闭连接
//请这里关闭Reader
}
misterhuxiaocheng 2012-05-18
  • 打赏
  • 举报
回复
没有一条有价值的回答吗?手动Close、using、CommandBehavior.CloseConnection 3个都用上了,Connection是更不用说了,当然是关闭了,不关闭就不会自动恢复了,现在是提示一下错误,一会又会自动恢复,整个项目没有static方法。这些问题我都没解决的话,也不会来这求助了。
呆子罗 2012-05-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
你可能使用了static类型导致的并发冲突,你可以去掉static关键字
[/Quote]
咦··还真是··我的DBHelper是静态方法为主
老孟啊··这种DBHelper经常调用的类,写成非静态的比较好咯?
孟子E章 2012-05-18
  • 打赏
  • 举报
回复
你可能使用了static类型导致的并发冲突,你可以去掉static关键字
zhujiawei7 2012-05-18
  • 打赏
  • 举报
回复
ExecuteReader(CommandBehavior.CloseConnection);
CommandBehavior.CloseConnection 枚举会在关闭DataReader时,也会自动关闭Connection
dalmeeme 2012-05-18
  • 打赏
  • 举报
回复
每次用完后,不仅DataReader要Close,Connection也要Close。

另外同一个Connection下,当DataReader处于打开状态时,不能再执行其他SQL操作数据库,因为当前连接已被占用。
licai1210 2012-05-18
  • 打赏
  • 举报
回复
系统默认connection给用完了

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧