谁能告诉我如何从OracleDataReader
.net 2.0 中查找行数?
问问题
21648 次
2 回答
6
一个
OracleDataReader
对象代表一个只进的、只读的、内存中的结果集。与 不同DataSet
,OracleDataReader
对象保持连接并一次获取一行。
所以,它不知道会有多少行。如果您使用数据适配器,那么您将能够获得行数,因为它会获取行。
在您的情况下,您必须获取所有行(如果您只需要获取数据)以获取行数:
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 回答