gpt4 book ai didi

c# - 如何处理多个 ResultSet,每个 ResultSet 有多行? IDataReader.NextResult() 结束 Read()

转载 作者:可可西里 更新时间:2023-11-01 08:01:48 24 4
gpt4 key购买 nike

如何处理多个结果集,每个结果集有多个行?调用 NextResult() 会中断 while 循环。

我的一些 SP 返回多个结果集。我正在使用 NextResult() 处理这些,但是当我这样做并且我的 SP 只有一个 ResultSet 时,我看到带有 Read() 的 while 循环完成后只剩下第一行。

如果不调用 NextResult(),我会得到第一个 ResultSet 的所有行,但当然不会处理第二个和后续的 ResultSets?

using (IDataReader reader = storedProcedure.ExecuteReader(
CommandBehavior.CloseConnection, parameterNames as string[], arguments))
{
while (reader.Read())
{
ArrayList row = new ArrayList();
for (int j = 0; j < reader.FieldCount; ++j)
{
object rowValue = reader.GetValue(j);

row.Add(rowValue);
}

reader.NextResult();//next resultset, breaks out of the while
}
}

最佳答案

您需要创建两个嵌套循环。

  • 外层循环应该遍历结果集并且在末尾应该有NextResult
  • 内部循环应该遍历结果集中的行并且应该在开头有 Read

类似于:

using (IDataReader reader = ...) { 
// Process all result sets
do {
// Process all elements in the current result set
while (reader.Read()) {
ArrayList row = new ArrayList();
for (int j = 0; j < reader.FieldCount; ++j) {
object rowValue = reader.GetValue(j);
row.Add(rowValue);
}
// TODO: Do something with 'row'
}
} while (reader.NextResult())
}

关于c# - 如何处理多个 ResultSet,每个 ResultSet 有多行? IDataReader.NextResult() 结束 Read(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com