selectステートメントを使用した後、NpgsqlDataReaderから行数を取得しようとしています。私がチェックしようとしている理由は、データを処理する前に、データがあるかどうか、単一の行があるかどうか、または複数の行があるかどうかを確認するためです。どんな助けでも大歓迎です。
これはC#.NET4で実行されています
NpgsqlDataReader
他のDataReaderのように継承する場合はDbDataReader
、次のコマンドで確認できます。
if (reader.HasRows) {...}
結果がある場合。しかし、リーダーをループせずに実際の行数を取得できるとは思いません。
プログレスバーの行数も取得したいのですが、2回繰り返すことができないので、進行状況を表示するだけでは手間がかかりすぎます;)
NpgsqlDataReader
イテレータの子であり、イテレータを再実装するプロキシクラスを作成できます(extends IEnumerable
)。これは、どちらかを指定するか.Read()
、要求すると、最初に最大2行を暗黙的に反復します。.CountClass
その後、キャッシュから2行を直接取得します。残りを読んでください。
クイックプレビューのみが必要な場合。
1.)結果がありません2.)結果が1つあります3.)結果が複数あります
LIMITerを使用して同様のSQLステートメントを実行できます。これは非常に高速である必要があります。そして、その実行後、完全なデータを取得します。
例:
[TABLE]から*を選択します。ここで[CONDITION]LIMIT2
0行を取得した場合、結果なし/ 1行を取得した場合、1つの結果/ 2行を取得した場合、複数の結果
ユースケースにもよりますが、私の場合、クエリの結果をリストに入れて、リストのアイテムを数えることができます。ユースケースには当てはまらないかもしれませんが、リストに追加すると結果が得られます。