来自OracleDataReader的行数

时间:2010-10-18 13:15:06

标签: .net odp.net rowcount

任何人都可以告诉我如何在.net 2.0中找到OracleDataReader的行数吗?

2 个答案:

答案 0 :(得分:5)

  

OracleDataReader对象代表   仅向前,只读,在内存中   结果集。与DataSet不同   OracleDataReader对象停留   连接并在a处取一行   时间。

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

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

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

但是如果您不需要这些数据,最好重新配置存储过程/查询以显式返回行数。

答案 1 :(得分: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;