IDbDataReader
C# と ADO.NET (およびIDbCommand
API)を使用して、データベースから大量のデータをクエリする必要があります。次のようなクエリを作成しました。
WITH v as
(SELECT myFields, Datefield
ROW_NUMBER() OVER (ORDER BY Datefield ASC) AS CurrentRow
FROM dbTable
WHERE /**/
AND Datefield BETWEEN @pStart AND @pEnd
// ... )
SELECT myFields, Datefield from v where CurrentRow
BETWEEN @pRowStart AND @pRowEnd
結果から、新しいデータを変換して生成する C# API を使用する必要があるため、SqlServer のみのソリューションは使用できません。
データがなくなるまで、ページサイズが 10000 のデータベースに対してクエリを実行したいと考えています。何かのようなもの
while (true)
{
// ... execute reader
if (reader.HasRows)
break;
}
IDbDataReader インターフェイスを使用する必要があるため、機能しません。
私の状況では何ができますか?
編集 + 解決策
while ループ内の各ブロックを繰り返し処理しHasRows
、データリーダーのプロパティを確認します。これは、特殊な型を使用できるためです。