NextResult和MARS之间的区别

时间:2013-08-15 02:57:34

标签: c# ado.net mars

using .NextResultMultiple有效结果集之间有什么区别?

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";
}

1 个答案:

答案 0 :(得分:5)

他们几乎是对立的。

使用.NextResult,单个代码依次消耗多个结果集。它通过调用.Read依次通过(尽可能多)每个结果集,然后当它不再想要处理该结果集时,它会调用.NextResult移动到下一个结果集。一旦调用.NextResult,就无法继续使用以前的结果集。

所有这些结果集必须已作为提交以生成DataReader的原始查询的一部分进行请求。 (作为单独的SELECT语句,或调用包含此类调用的存储过程,或两者的组合)

使用MARS,当您通过DataReader使用结果集时,可以在生成新的单独{{}}的同一连接上提交单独的查询{1}}。两个读者都可以并行访问。