执行存储过程错误:System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.
操作背景为:一直持续的点击一个操作,一直在执行存储过程。
这个是ADO.NET的经典问题了,你每次新建连接就不会出这个错误了。或者像一楼说的,启用MARS。
大叔,启用MARS 会有不良影响吗?
@BUTTERAPPLE: 没注意一楼是你自问自答啊。
你链接不是写了么 Disadvantages of Mars?
应用场景很重要,没有一种方法是适合所有场景的,你知道各种不同的方法,懂得调错,就行了。
至于什么场景用啥方法,得你自己摸索了。网上瞎说的居多。
@爱编程的大叔: 好的吧。
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";
你的程序里面DataReader对象没关闭,先把对象那关闭才行