Количество строк из OracleDataReader

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


person Pradeep    schedule 18.10.2010    source источник


Ответы (2)


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

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

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

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

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

person Alex    schedule 25.02.2011

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;
person Diego Fernando Villarroel Diaz    schedule 26.10.2015