【问题标题】:Row count from OracleDataReaderOracleDataReader 的行数
【发布时间】:2010-10-18 13:15:05
【问题描述】:

谁能告诉我如何在 .net 2.0 中从 OracleDataReader 中查找行数?

【问题讨论】:

    标签: .net odp.net rowcount


    【解决方案1】:

    OracleDataReaderobject 代表 只进,只读,内存 结果集。与DataSet 不同, OracleDataReaderobject 保留 连接并在 a 处获取一行 时间。

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

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

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

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

    【讨论】:

      【解决方案2】:
      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-04
        • 2011-01-14
        • 1970-01-01
        • 1970-01-01
        • 2017-05-12
        • 2014-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多