我正在阅读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的情况下检查它?
答案 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
。