using .NextResult
和Multiple
有效结果集之间有什么区别?
sqlReader.NextResult();
while (sqlReader.Read())
{
MessageBox.Show("From third SQL - " +
sqlReader.GetValue(0) + " - " +
sqlReader.GetValue(1));
}
MARS
private static string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrive it from a configuration file.
return "Data Source=(local);Integrated Security=SSPI;" +
"Initial Catalog=AdventureWorks;MultipleActiveResultSets=True";
}
答案 0 :(得分:5)
他们几乎是对立的。
使用.NextResult
,单个代码依次消耗多个结果集。它通过调用.Read
依次通过(尽可能多)每个结果集,然后当它不再想要处理该结果集时,它会调用.NextResult
移动到下一个结果集。一旦调用.NextResult
,就无法继续使用以前的结果集。
所有这些结果集必须已作为提交以生成DataReader
的原始查询的一部分进行请求。 (作为单独的SELECT
语句,或调用包含此类调用的存储过程,或两者的组合)
使用MARS,当您通过DataReader
使用结果集时,可以在生成新的单独{{}}的同一连接上提交单独的查询{1}}。两个读者都可以并行访问。