DataReader的奇怪问题,没有数据时DataReader.Read()返回true,我如何是好?
string query=Session["queryClause"].ToString();
//总的统计信息
string queryTotal="SELECT min(substr(zbxh,1,8)) as dateStart,max(substr(zbxh,1,8)) as dateEnd,sum(bhfl) as sumBhfl from cm_v_jzxxb where "+query;
OracleConnection conn=new OracleConnection(myLink.ConnectionString);
OracleCommand comm=new OracleCommand(queryTotal,conn);
conn.Open();
reader=comm.ExecuteReader();
if(reader.Read())
{
dateStart=reader.GetString(0);
dateEnd=reader.GetString(1);
sumBhfl=reader.GetDouble(2);
this.lblDateStart.Text=dateStart.Substring(0,4)+"年"+dateStart.Substring(4,2)+"月"+dateStart.Substring(6,2)+"日";
this.lblDateEnd.Text=dateEnd.Substring(0,4)+"年"+dateEnd.Substring(4,2)+"月"+dateEnd.Substring(6,2)+"日";
this.lblSumBhfl.Text=sumBhfl.ToString();
}
reader.Close();
conn.Close();
数据库为oracle,从session传过来查询条件.当有满足条件的数据时,程序正常.当没有满足条件的数据时,reader.Read()居然也为true,下面的语句当然出错.报错为
//以上为错误信息
不存在此行或列的数据。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 不存在此行或列的数据。
源错误:
行 59: if(reader.Read())
行 60: {
行 61: dateStart=reader.GetString(0);
行 62: dateEnd=reader.GetString(1);
行 63: sumBhfl=reader.GetDouble(2);
请大家看看,怎么回事?