Как обработать пустое значение для поля даты-времени (БД) в нашем приложении? - PullRequest
6 голосов
/ 29 августа 2009

Как мы можем обработать нуль для поля даты и времени (полученного из SQL Server) в нашей программе на c #?

Ответы [ 2 ]

12 голосов
/ 29 августа 2009

Здесь есть 3 общих подхода;

  • если вы говорите о object (возможно, когда вы извлекаете его из устройства чтения данных), тогда DBNull.Value может представлять собой ноль. Я не склонен пропускать это из уровня данных, хотя
  • из-за истории .NET 1.1, DateTime.MinValue обычно интерпретируется как null; может быть, магическое число - но оно работает и поддерживается большинством привязок данных и т. д.
  • в .NET 2.0, Nullable<T> означает, что вы можете использовать DateTime? - то есть nullable-of-DateTime; просто используйте DateTime? где бы вы ни имели в виду DateTime, который может быть нулевым, и вы можете присвоить ему значение null или действительное DateTime.

Некоторые другие мысли о доступе к данным и нулям:

  • при переходе на SqlCommand вы должны использовать DBNull.Value, а не null - см. Ниже
  • при чтении из считывателя данных я склонен проверять reader.IsDbNull(ordinal)

командный материал (на примере Nullable<T>):

param.Value = when.HasValue ? (object)when.Value : DBNull.Value;
3 голосов
/ 29 августа 2009

Использование DateTime?

Какая у вас проблема, в частности?

- Правка

Просто понятно, что это Nullable объект DateTime, а не вопрос:)

DateTime? t = null;

- Изменить

Отвечая на комментарий, отметьте его так:

DateTime? theTime;

if( table["TheColumn"] == DBNull.Value ){
    theTime = null;
} else {
    theTime = (DateTime) table["TheColumn"];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...