5

谁能告诉我如何从OracleDataReader.net 2.0 中查找行数?

4

2 回答 2

6

一个OracleDataReader对象代表一个只进的、只读的、内存中的结果集。与 不同DataSetOracleDataReader对象保持连接并一次获取一行。

所以,它不知道会有多少行。如果您使用数据适配器,那么您将能够获得行数,因为它会获取行。

在您的情况下,您必须获取所有行(如果您只需要获取数据)以获取行数:

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 回答