C# NextResult与MARS的区别
C# NextResult与MARS的区别,c#,ado.net,sql-server-mars,C#,Ado.net,Sql Server Mars,使用.NextResult和多个活动结果集之间有什么区别 sqlReader.NextResult(); while (sqlReader.Read()) { MessageBox.Show("From third SQL - " + sqlReader.GetValue(0) + " - " + sqlReader.GetValue(1)); } 火星 private static string G
使用.NextResult
和多个
活动结果集之间有什么区别
sqlReader.NextResult();
while (sqlReader.Read())
{
MessageBox.Show("From third SQL - " +
sqlReader.GetValue(0) + " - " +
sqlReader.GetValue(1));
}
火星
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";
}
它们几乎是对立的 在中,一段代码按顺序使用多个结果集。它通过调用
.Read
依次处理(尽可能多地)每个结果集,然后当它不再需要处理该结果集时,它调用.NextResult
以转到下一个结果集。一旦调用了.NextResult
,就无法继续使用上一个结果集
所有这些结果集都必须作为原始查询的一部分被请求,原始查询被提交以生成DataReader
。(作为单独的SELECT
语句,或调用包含此类调用的存储过程,或两者的组合)
使用,当您通过
DataReader
使用结果集时,您可以在同一连接上提交单独的查询,以生成新的、单独的DataReader
。两个读卡器可以并行访问。+1但它们不是相反的。。。它们可能是正交的,甚至因为在火星上,你甚至可以对每个DataReader
@xanatos使用多个结果集——我正试图决定最好用什么词来描述它们。你可能是对的,正交更适合。对于Damien所写的,我要补充一点,火星可能很少使用,因为它是通往SELECT N+1
反模式的道路。最后,如果第一个结果集很小,您可以在集合中读取它,然后执行第二个查询,而如果太大,则执行选择N+1
将杀死您。因此,火星的使用案例很少。