是这样的,当你执行一次OracleDataReader.Read()事件后,OracleDataReader只读取一条以前从未记录过的纪录,并返回值True(OracleDataReader.Read()是Bool型),注意是只读取一个!如果你的Select语句执行结果是空,或者所有的结果都已经读取完了则OracleDataReader()返回False。所以想实现判断记录是否为空时刻可以用下面方法:
OracleConnection dbcnt;//定义一个数据库连接
OracleDataCommand dbcmd;//定义一个数据库命令行
OracleDataReader dbreader;//定义一个DataReader
dbcnt.ConnectionString="你的连接字符串";
dbcmd.Connection=dbcnt;
dbcmd.CommandText="select a from b where a=c";//SQL查询语句
dbcmd.Connection.Open();//连接到数据库
dbreader=dbcmd.ExecutReader();//用上面的SQL查询语句构造DataReader
if(dbreader.Read())//如果SQL查询有结果,并且没有读完则执行{...}的内容。否则跳过。
 {
   ......
 }
dbcmd.Connection.Close();//关闭数据库连接