OracleDataReader.net 2.0から行数を見つける方法を教えてもらえますか?
21648 次
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 に答える