任何人都可以告诉我如何在.net 2.0中找到OracleDataReader
的行数吗?
答案 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;