问题描述
小弟初学c#,写了一个数据查询的程序,分别用四个方法实现数据查询结果是否为空的判断,方法1和方法2都可以,但是方法三和方法四一直提示“对象的当前状态使该操作无效”异常,请各位大侠给指点下,问题出在哪?备注:1、oradr.GetString(0)))字段本人用控制台测试是能正确输出相关数据库字段信息的;2、看到网上说这个错误一般是,数据超过1000条的缘故,但是这个用户数据库里面只有一条数据,所以我也有点头晕,还请各位指教,谢谢。”try{conn.Open();sql="selectt.*,t.rowidfromyonghut";OracleCommandoracom=newOracleCommand(sql,conn);//OracleDataAdapteroraada=newOracleDataAdapter(oracom);OracleDataReaderoradr=oracom.ExecuteReader();//if(oradr.Read()==true)//方法一//if(oradr.HasRows)//方法二if(!string.IsNullOrEmpty(Convert.ToString(oradr.GetString(0))))//方法三//if(oradr.IsDBNull(0))//方法四{MessageBox.Show("正确读到相关数据!");}else{MessageBox.Show("查询数据为空");}conn.Close();}catch(Exceptione){MessageBox.Show(e.Message);}
解决方案
解决方案二:
是oracle10g吗?如果是,换成11g还有,这句:if(!string.IsNullOrEmpty(Convert.ToString(oradr.GetString(0))))可以缩减一下if(!string.IsNullOrEmpty(oradr.GetString(0)))
解决方案三:
目测oradr.GetString(0)、oradr.IsDBNull(0)是在oradr.Read()的基础上,才可以使用的。你控制台输出oradr.GetString(0),前面肯定有while(oradr.Read())咯。