我有一些C#,其中我在连接(ExecuteReader
)上创建一个阅读器,然后对于该阅读器中的每一行,执行另一个命令(ExecuteNonQuery
)。在这种情况下,我最好在我的连接上使用MultipleActiveResultSets=True
还是使用多个连接?
答案 0 :(得分:85)
为此类操作专门添加了多个活动结果集(MARS),因此您无需同时打开两个连接即可从SqlDataReader读取并执行其他批处理。
MARS与SQL Server 2005及更高版本兼容。引用MSDN文档:
在推出Multiple之前 开发人员,活动结果集(MARS) 不得不使用多个连接 或服务器端游标来解决 某些情况。
有关详细信息,请参阅:
工作示例读取和更新数据:
MSDN Library - Manipulating Data (MARS)向下滚动到“使用MARS阅读和更新数据”
答案 1 :(得分:17)
据我所知,MARS被添加的原因,所以我认为你应该使用它。
答案 2 :(得分:0)
测试这个的最好方法是激活SQLServer Profiler,看看服务器端真正发生了什么。
我的猜测是,因为你使用的是ExecuteNonQuery(),所以它不会更好。因此,事实上,您不会使用多个结果。