いくつかのSQLクエリをバッチとして実行してから、すべての結果セットをバッチに戻しています。私のコードが現在まとめられている方法では、最初の結果セットはスキップされます。これがわかったので、ループの外に最初の結果を取得する別のステートメントを挿入するだけで済みますが、この問題に対してより洗練された解決策があるかどうか疑問に思っています。
これが何が起こっているかのsudoコードです:
DbDataReader reader= /*some stuff that returns a batch of results...*/;
while (reader.NextResult())
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do things with the data....
}
}
}
これで、NextResult()を最初に呼び出したときに、最初の結果に進むことが期待されていました。これは、Read()が実行しているように見えます。ただし、実際に行われているように見えるのは、最初の呼び出しで2番目の結果に到達することです。私はあなたがこの方法をどのように使用することが期待されているかを誤解していますか、それともあなたは本当に次のようなことをすることが期待されていますか?
DbDataReader reader= /*some stuff that returns a batch of results...*/;
//this deals with the row in the the very first result
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do things with the data....
}
}
//this deals with the rest of the rows...
while (reader.NextResult())
{
while (reader.Read())
{
if (!reader.IsDBNull(0))
{
//do exact same things with the data....
//is this not pretty klugey?
}
}
}
これは私を腐ったプログラミングスタイルだと思いますが、それを回避する方法はわかりません。誰かがこれに対するよりエレガントな解決策を知っていますか?