【发布时间】:2010-10-18 13:15:05
【问题描述】:
谁能告诉我如何在 .net 2.0 中从 OracleDataReader 中查找行数?
【问题讨论】:
谁能告诉我如何在 .net 2.0 中从 OracleDataReader 中查找行数?
【问题讨论】:
OracleDataReaderobject 代表 只进,只读,内存 结果集。与DataSet不同,OracleDataReaderobject 保留 连接并在 a 处获取一行 时间。
所以,它不知道会有多少行。如果您使用数据 适配器,那么您将能够获得行数,因为它获取 行。
在您的情况下,您必须获取所有行(如果您只需要获取数据)以获取行数:
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;
【讨论】: