Количество строк из OracleDataReader - PullRequest
4 голосов
/ 18 октября 2010

Может кто-нибудь сказать мне, как найти количество строк из OracleDataReader в .net 2.0?

Ответы [ 2 ]

5 голосов
/ 25 февраля 2011

Объект OracleDataReader представляет только для пересылки, только для чтения, в памяти набор результатов. В отличие от DataSet, OracleDataReader объект остается подключен и выбирает один ряд на время.

Итак, он не знает, сколько будет строк. Если вы используете данные адаптер, то вы сможете получить количество строк, так как он выбирает строки.

В вашем случае вам нужно выбрать все строки (если вам нужно только получить данные), чтобы получить количество строк:

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

Но если вам не нужны эти данные, было бы лучше переформулировать вашу хранимую процедуру / запрос, чтобы явно возвращать количество строк.

1 голос
/ 26 октября 2015
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;
...