私はC#のプログラミングには新しく、私はこのスクリプトを継承しています。SqlDataReader.NextResult()は0の結果を扱います
私は3つの結果セットを持つプロシージャを呼び出しています。最初の結果セットは常に1レコードを返します。 2番目の結果セットは、1レコードまたは0レコードを返すことがあります。 3番目の結果セットは、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を返した結果、第1 0この場合において第三のセットは、「ここでは」第一の出力が、第二及び第三のをスキップします。
は、私はそれのための0結果がある場合には、第2セットをスキップして、いずれかの結果があるかどうかを判断するためにSqlDataReader.HasRows
プロパティを使用することができます第三
NextResultはboolを再実行します。あなたの呼び出しは真実を返しますか?ここの2番目が表示されない場合、例外がスローされており、あなたはそれを静かに投げ捨てています。また、あなたのリーダーを処分するために 'using'ステートメントを使う必要があります。 –