首页 新闻 搜索 专区 学院

There is already an open DataReader associated with this Command which must be closed first.

0
[已解决问题] 解决于 2017-12-12 16:44

执行存储过程错误:System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.

问题补充:

操作背景为:一直持续的点击一个操作,一直在执行存储过程。

BUTTERAPPLE的主页 BUTTERAPPLE | 老鸟四级 | 园豆:3190
提问于:2017-12-12 15:45
< >
分享
最佳答案
1

这个是ADO.NET的经典问题了,你每次新建连接就不会出这个错误了。或者像一楼说的,启用MARS。

奖励园豆:5
爱编程的大叔 | 高人七级 |园豆:30813 | 2017-12-12 16:31

大叔,启用MARS 会有不良影响吗?

BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2017-12-12 16:38

@BUTTERAPPLE: 没注意一楼是你自问自答啊。

你链接不是写了么 Disadvantages of Mars?

应用场景很重要,没有一种方法是适合所有场景的,你知道各种不同的方法,懂得调错,就行了。

至于什么场景用啥方法,得你自己摸索了。网上瞎说的居多。

爱编程的大叔 | 园豆:30813 (高人七级) | 2017-12-12 16:42

@爱编程的大叔: 好的吧。

BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2017-12-12 16:43
其他回答(2)
0

This can be easily solved by allowing MARS in your connection string. Add MultipleActiveResultSets=true to the provider part of your connection string (where Data Source, Initial Catalog, etc. are specified).

在连接字符串添加参数

string connectionString = "Data Source=MSSQL1;" + 
    "Initial Catalog=AdventureWorks;Integrated Security=SSPI" +
    "MultipleActiveResultSets=True";
BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2017-12-12 15:55
0

你的程序里面DataReader对象没关闭,先把对象那关闭才行

琴声 | 园豆:147 (初学一级) | 2017-12-12 15:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册