SqlDataReader.NextResult()处理0结果

时间:2017-03-09 17:34:20

标签: c#

我对c#编程很陌生,我继承了这个我试图继续工作的脚本。

我正在调用一个包含3个结果集的过程。第一个结果集将始终返回1条记录。第二个结果集可能返回1或0条记录。第三个结果集可能返回1或0条记录。

SqlCommand cmd  = new SqlCommand("MyProc", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@param1", param1));
cmd.Parameters.Add(new SqlParameter("@param2", param2));

pageData = cmd.ExecuteReader();
while (pageData.Read()){
   // Do some stuff here
}
Response.Write("HERE");
pageData.NextResult();                          
while (pageData.Read()){
   // Do some stuff here
}
Response.Write("HERE2");
pageData.NextResult();                          
while (pageData.Read()){
    Response.Write("HERE3");
}

在我的测试用例中,第一个记录集返回1个结果,第二个记录集返回0和第三个记录集。在这种情况下,它输出第一个" HERE",但跳过第二个和第三个。

如果结果为0,我需要跳过第二组,然后转到第三组

2 个答案:

答案 0 :(得分:1)

您可以使用SqlDataReader.HasRows属性来确定是否有任何结果。

pageData.NextResult();                          
if (pageData.HasRows)
{
 while (pageData.Read()){
   // Do some stuff here
}

答案 1 :(得分:0)

您可能想要执行以下操作:

pageData = cmd.ExecuteReader();

while (pageData.HasRows) {
    while (pageData.Read()){
       // Do some stuff here
    }

    pageData.NextResult();                          
}

希望有所帮助。