datareader.read()每次读取从数据库中读出一个数据块。当sql语句为普通的select语句时,如果数据库中没有值,返回值为null,此时.read()为false。当sql语句有函数等时,如果没有符合条件的值,返回为DBNull,此时,.read()为true,读出的是空字符串"",因此这时判断是否从数据库读出值的语句应该写成:
OracleDataReader MyReaderYear = MyDataBase.getread("select to_char(max(plan_date_x),'yyyy') from plan_furnace");
MyReaderYear.Read();
if (MyReaderYear.GetValue(0)!= System.DBNull.Value)
{
max_year = MyReaderYear[0].ToString();
}