5

OracleDataReader.net 2.0から行数を見つける方法を教えてもらえますか?

4

2 に答える 2

6

OracleDataReaderオブジェクトは、前方専用、読み取り専用、メモリ内の結果セットを表します。とは異なり、DataSetオブジェクト OracleDataReaderは接続されたままで、一度に 1 行ずつフェッチします。

したがって、何行になるかはわかりません。データ アダプタを使用すると、行がフェッチされるため、行数を取得できます。

あなたの場合、行数を取得するには、すべての行をフェッチする必要があります(データのみをフェッチする必要がある場合):

OracleDataReader reader = cmd.ExecuteReader();
int rowCount = 0;
while (reader.Read())
{
    // your logic here
    rowCount++;
}

ただし、そのデータが必要ない場合は、ストアド プロシージャ/クエリを再構成して、行数を明示的に返す方がよいでしょう。

于 2011-02-25T11:37:00.080 に答える
1
OracleDataReader objReader = cmd.ExecuteReader();
while(cmdReader.Read()) nRegisters++; objReader = cmd.ExecuteReader();

その「ポインター」は、もう一度読みたいときに最後の位置にとどまるため、そのobjReaderを再初期化する必要があります...そして、カーソルの最初の位置に戻るオプションはありません。

取得したレジスタの数が必要な場合は、すべての行をカウントするのではなく、選択で COUNT(*) を実現する必要があります。コードについて実用的である必要があります。

特定の都市の市民数が必要な場合のように:

BEGIN
OPEN REF_CUR FOR
    SELECT COUNT(*)        AS nRegisters,
           City            AS Var1,
           Country         AS Var2
      FROM Citizens
     WHERE City = 'City';

RETURN;
END;
于 2015-10-26T19:37:35.277 に答える