2014-12-01 5 views
-2

Я читаю базу данных MySql, где один из столбцов имеет тип DateTime. Некоторые из этих дат равны нулю. Я не могу понять, как проверить, является ли значение нулевым или нет. Я думал, что IsDbNull бы решить эту проблему, но это не делает никакой разницы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)) 

Как проверить это без использования попробовать поймать?

+0

Какой тип читателя? – faester

+0

Какое значение datetime вы читаете? Он может находиться вне диапазона System.DateTime. – Blorgbeard

+0

'IsDBNull' не выбрасывает эту ошибку. Но 'reader.GetDateTime (" serviceDate ")' должен вызывать ошибку компилятора, поскольку 'GetDateTime' принимает только параметр' int', который является индексом столбца. Покажите свой реальный код. –

ответ

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

+0

Спасибо! Настройки AllowZeroDateTime решили! – haosmark

Смежные вопросы