IsDBNull抛出异常

时间:2014-12-01 22:31:57

标签: c#

我正在阅读MySql数据库,其中一列是DateTime类型。其中一些日期为空。我似乎无法弄清楚如何检查值是否为空。 我认为IsDbNull可以解决这个问题,但它根本没有区别

if (!reader.IsDBNull(4))
{
   service.ServiceDate = reader.GetDateTime("serviceDate");
}

这是我得到的例外:

  

"其他信息:无法将MySQL日期/时间值转换为   的System.DateTime"

我也试过

if (System.DBNull.Value == reader.IsDBNull(4))

以及

reader.IsDBNull(4).ToString()

Convert.ToBoolean(reader.IsDBNull(4))

如何在不使用try catch的情况下检查它?

1 个答案:

答案 0 :(得分:3)

该错误似乎与IsDBNull没有任何关系 - 它特别提到了DateTime转换。您是否尝试将列索引传递给GetDateTime,就像使用IsDbNull一样?

if (!reader.IsDBNull(4))
{
   service.ServiceDate = reader.GetDateTime(4);
}

另一种可能性:Convert Zero Datetime=true

此外,在阅读了有关错误的其他一些信息之后,您可能需要在连接字符串中添加Convert Zero Datetime=true,这样才能转换0000-00-00 00:00:00中的DATETIME值列(如果您有任何这些)到DateTime.MinValue

在此处查看部分结果:http://www.bing.com/search?q=Unable+to+convert+MySQL+date%2Ftime+value+to+System.DateTime&form=IE10TR&src=IE10TR&pc=HPDTDFJS