我对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,我需要跳过第二组,然后转到第三组
答案 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();
}
希望有所帮助。