0

IDataReaderにはカウントオプションがないことを知っています。また、データリーダーで行をカウントして、元に戻って再度読み取ることはできません。これは、前に進むだけで、巻き戻すことができないためです。私の頭に浮かぶ最善の解決策は、selectステートメントを実行し、datareaderで行をカウントしてから、別のselectステートメントを実行し、データに対して実行したいことをすべて実行することです。

この質問は何度もここに投稿された可能性がありますが、誰もこれに対する本当の解決策を与えていません。2番目のselectステートメントを実行しない場合の最良の解決策は何ですか?(選択は高価です)

ありがとうございました

4

1 に答える 1

1

まあ、それは、読み取る前に行数が必要な場合にのみ問題になります。それ以外の場合は、結果を反復してカウントするだけで、必要なものが得られます。または、すべてをデータセットに読み込み、そこから作業するだけです

最初の行を読むときに行数が必要だとすると、いつでもこのようなことができます (それは良い考えではありません)。

SELECT [The Real Fields],COUNT(*) as Qty
WHERE [Conditions]
UNION 
SELECT [The Real Fields],0 as Qty
WHERE [Conditions]

そうすれば、最初の行を読むときに、使用可能な行数がわかります。

そして、はい、ユニオンと重複クエリなしで行数​​を取得するために SQL を実行するより良い方法があるかもしれないことを私は知っています。

于 2013-02-27T13:26:44.820 に答える