2

selectステートメントを使用した後、NpgsqlDataReaderから行数を取得しようとしています。私がチェックしようとしている理由は、データを処理する前に、データがあるかどうか、単一の行があるかどうか、または複数の行があるかどうかを確認するためです。どんな助けでも大歓迎です。

これはC#.NET4で実行されています

4

5 に答える 5

2

NpgsqlDataReader他のDataReaderのように継承する場合はDbDataReader、次のコマンドで確認できます。

if (reader.HasRows) {...}

結果がある場合。しかし、リーダーをループせずに実際の行数を取得できるとは思いません。

于 2011-05-13T13:18:00.007 に答える
1

少しグーグルすると、NpgsqlDataReaderはsqldatareaderと非常に似ているように見えます。sqldatareaderには、行数を取得するための組み込みの方法がありません。行数を取得したい場合は、ループして独自のカウントを実行する必要があるように見えます。

于 2011-05-13T13:23:18.257 に答える
0

プログレスバーの行数も取得したいのですが、2回繰り返すことができないので、進行状況を表示するだけでは手間がかかりすぎます;)

NpgsqlDataReaderイテレータの子であり、イテレータを再実装するプロキシクラスを作成できます(extends IEnumerable)。これは、どちらかを指定するか.Read()、要求すると、最初に最大2行を暗黙的に反復します。.CountClassその後、キャッシュから2行を直接取得します。残りを読んでください。

于 2011-06-28T11:37:22.237 に答える
0

クイックプレビューのみが必要な場合。

1.)結果がありません2.)結果が1つあります3.)結果が複数あります

LIMITerを使用して同様のSQLステートメントを実行できます。これは非常に高速である必要があります。そして、その実行後、完全なデータを取得します。

例:

[TABLE]から*を選択します。ここで[CONDITION]LIMIT2

0行を取得した場合、結果なし/ 1行を取得した場合、1つの結果/ 2行を取得した場合、複数の結果

于 2011-05-13T13:26:33.033 に答える
0

ユースケースにもよりますが、私の場合、クエリの結果をリストに入れて、リストのアイテムを数えることができます。ユースケースには当てはまらないかもしれませんが、リストに追加すると結果が得られます。

于 2021-12-31T17:49:36.463 に答える