问题如下:
在查询数据的SQL语句中只产生一列Max值时,如果该列没有数据,Max执行后会产生一个空值“null”,存在一行数据。此时通过DataReader对象的HasRows属性判断是否有数据行会出现异常,但用Reader()方法来判断可以通过。(同样Count、Avg等在这种情况下也会出现这个异常)请高手指教一下为什么?谢谢!

解决方案 »

  1.   

    不知道,不过我这样取数据:
    DataReader["KEY"]
      

  2.   

    代码和SQL如下:
    str_max = "select max(ma) from (select dxdy,count(*) ma from table group by dxdy)";
    OracleCommand cmd_max = new OracleCommand(str_max, conn);
    OracleDataReader dr_max = cmd_max.ExecuteReader()
    if (!dr_max.HasRows)                  
        d_max = 0;
    else
       d_max = int.Parse(cmd_max.ExecuteOracleScalar().ToString());       
                    
      

  3.   

    用通过如下代码就不会报出“System.InvalidOperationException: 没有数据可用于行或列”异常
    if(!dr_max.Read())
        d_max=0;
    else 
        if(dr_max.isDBNull(0)=="Null");
           d_max=0;
        else
           d_max=int.Parse(dr_max[0].ToString());