我正在通过ODBC连接从DB2数据库读取记录。数据被填充到ODBCDataReader中。当我正在通过我的foreach循环时,我遇到了试图解析多个不同日期时间字段的问题。阅读空数据和空日期值的C#ODBCDataReader
某些字段为空,有些字段的日期时间值为空(9999-12-31 24:00:00:00),有些字段的日期时间值有效(2010-07-09 20:43:32.037234)。
我试着做这样的事情赶上空日期时间错误:!
if (!dr[dbFieldName].Equals(DBNull.Value))
{
if (dr.GetDate(dr.GetOrdinal(dbFieldName)).Equals(DateTime.Parse("9999-12-31 24:00:00.000000")))
{
fieldValues[tag] = "";
}
else
{
strValue = dr.GetDate(dr.GetOrdinal(dbFieldName)).ToString("s");
fieldValues[tag] = strValue.Trim();
}
}
对GetType()名称=“为DBNull”似乎捕捉空值工作。然而,下一个if语句会引发ArgumentOutOfRangeException错误。这似乎发生在具有9999-12-31 24:00:00.000000值的字段上。
有没有办法正确解析这个?看起来像我试图评估这些空日期时间字段抛出错误的任何方式。
它看起来像我不能触摸没有ArgumentOutOfRangeException的dr [dbFieldName]字段被引发时,该字段包含时间值24:00:00.000000。 – 2010-07-10 05:12:01
好吧,它看起来像我找到了解决方案。我不会选择数据库中的这些DateTime字段作为时间戳,而是选择它们作为字符串。然后我可以根据需要解析这些值,并将它们放入DateTime对象中。 – 2010-07-10 05:40:29