C#将SqlDataReader列值与0进行比较

C#将SqlDataReader列值与0进行比较,c#,sql-server,sqldatareader,C#,Sql Server,Sqldatareader,我有一段代码: // Do comparisons for highlighting if (cellNum == reader.GetOrdinal("MTD Carryover")) { tempCell.Width = 155; if (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) < 0) { tempCell.Attributes.Add("class", tempCell.Attribu

我有一段代码:

// Do comparisons for highlighting
if (cellNum == reader.GetOrdinal("MTD Carryover"))
{
   tempCell.Width = 155;

   if (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) < 0)
   {
       tempCell.Attributes.Add("class", tempCell.Attributes["class"] + " " + "RedBackground");
   }
   else
   {
       tempCell.Attributes.Add("class", tempCell.Attributes["class"] + " " + "GreenBackground");
   }

   // Test for yellow last, MTD Carrover - 10% but still less than 0
   if (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) > (reader.GetInt32(reader.GetOrdinal("MTD 
       Carryover")) - (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) * .1))
                                    && (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) > 0))
   {  
       tempCell.Attributes.Add("class", tempCell.Attributes["class"] + " " + "YellowBackground");
   }
}

我是C#的新手,在我的第一个完整网站上广泛使用StackOverflow。不过,我似乎找不到这个问题的答案。非常感谢您的帮助。

通过进一步检查,我实际上在SQL中的MTD结转字段中有空值,我没有意识到这一点。

哪一行引发了异常?你在某处调用
reader.Read()
吗?是的,我在调用此代码之前调用reader.Read()。我从SqlDataReader获得的数据很好。引发异常的行是:if(reader.GetInt32(reader.GetOrdinal(“MTD结转”))<0),特别是0。SqlDataReader似乎认为我正在尝试访问Sql值
// Used in the SqlDataReader compare below for column highlighting
Int32 compareMTDCarryover = 0;