任何人可以告诉我如何在.net 2.0中找到OracleDataReader
的行数?来自OracleDataReader的行数
4
A
回答
5
一种
OracleDataReader
对象表示 仅向前,只读,内存中 结果集。与DataSet
不同,OracleDataReader
对象停留 连接并提取一行 时间。
因此,它不知道会有多少行。如果使用数据 适配器,那么您将能够获取行计数,因为它会取得 行。
在你的情况,你必须获取所有行(如果你需要获取的数据只),以获得行数:
OracleDataReader reader = cmd.ExecuteReader();
int rowCount = 0;
while (reader.Read())
{
// your logic here
rowCount++;
}
但是,如果你并不需要这些数据,这将是最好重新制定你的存储过程/查询以明确返回行数。
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;