lea*_*tes 13 c# stored-procedures datareader
如何处理多个ResultSet,每个ResultSet有多个行?NextResult()
打破while循环的调用.
我的一些SP返回多个ResultSet.我正在处理这些,NextResult()
但是当我这样做并且我的SP只有一个ResultSet时,我看到带有Read()的while循环完成后只剩下第一行.
没有调用NextResult()
我得到第一个ResultSet的所有行,但当然第二个和后续的ResultSet不会被处理?
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
}
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*cek 35
您需要创建两个嵌套循环.
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())
}
Run Code Online (Sandbox Code Playgroud)