Может ли кто-нибудь сказать мне, как найти количество строк из OracleDataReader
в .net 2.0?
Количество строк из OracleDataReader
Ответы (2)
OracleDataReader
object представляет набор результатов, предназначенный только для пересылки, только для чтения, в памяти. В отличие отDataSet
, объектOracleDataReader
остается подключенным и извлекает по одной строке за раз.
Таким образом, он не знает, сколько строк будет. Если вы используете адаптер данных, вы сможете получить количество строк, поскольку он извлекает строки.
В вашем случае вам нужно получить все строки (если вам нужно получить только данные), чтобы получить количество строк:
OracleDataReader reader = cmd.ExecuteReader();
int rowCount = 0;
while (reader.Read())
{
// your logic here
rowCount++;
}
Но если вам не нужны эти данные, было бы лучше переформулировать вашу хранимую процедуру/запрос, чтобы явно возвращать количество строк.
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;