C#在在与数据库实现查询时,总是报错!(ExecuteReader 要求已打开且可用的 Connection)

如图,结果老是报错,百度了很久也没能解决我把图中红色箭头上方的rd.close();去掉也不行... 如图,结果老是报错,百度了很久也没能解决

我把图中红色箭头上方的rd.close();去掉也不行
展开
 我来答
白衣飘飘的年华
2015-03-23 · TA获得超过193个赞
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:126万
展开全部
你这代码读起来好费力啊、循环嵌套条件判断也太多了吧。大致分析原因可能如下:错误提示是connection被断开了,所以应该把conn.close()去掉在最后面执行。程序本来就应该在所有任务都完成了再关闭连接,你在中途关闭它干吗。
关键在于你要知道这里面有一个循环语句foreach,你在前面的循环把连接关掉,那下一次循环时自然会报错呀。不信你可以试试,在foreach第一次循环时肯定不会报错,报错是在后面的循环中。
更多追问追答
追问
谢谢,搞定了,高手
追答
rd.close和rd.dispose这些都不要,conn.close 和conn.dispose放函数最后。
那你在第一次执行cmd.ExecuteReader();时有报错吗?
另外你可以在调试时设置断点等方法跟踪查看conn的状态,看是否发生改变。
zyt8448757
2015-03-23 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:110万
展开全部
conn.open()不要注释也不行吗
更多追问追答
追问
不行,在conn.open();报错说“连接未关闭。 连接的当前状态为打开。”
去掉rd.close();报错说“已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。”
追答
重新新建sqlcommand不行吗,为什么要用同一个sqlcommand
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式