Как обработать пустой указатель для поля даты и времени позволять-пустого-указателя (DB) в нашей программе?

При разработке приложения с нуля можно сделать некоторый образованный выбор о том, когда назвать свободным. Ваш пример программы прекрасен: это выделяет память, возможно, у Вас есть он работа в течение нескольких секунд, и затем закрывается, освобождая все ресурсы, которых это требовало.

, Если Вы пишете что-либо еще, хотя - приложение сервера / продолжительное приложение или библиотека, которая будет использоваться кем-то еще, необходимо ожидать называть свободным на всем Вы malloc.

Игнорирование прагматически настроенной стороны в течение секунды, намного более безопасно следовать за более строгим подходом и вынудить себя освободить все Вы malloc. Если Вы не имеете привычку наблюдать за утечками памяти каждый раз, когда Вы кодируете, Вы могли легко пружинный несколько утечек. Так, другими словами, да - можно уйти без него; будьте осторожны, все же.

6
задан odiseh 29 August 2009 в 08:58
поделиться

2 ответа

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

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

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

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

командный материал (с Nullable в качестве примера):

param.Value = when.HasValue ? (object)when.Value : DBNull.Value;
12
ответ дан 8 December 2019 в 16:06
поделиться

Использовать DateTime?

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

- Изменить

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

DateTime? t = null;

- Edit

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

DateTime? theTime;

if( table["TheColumn"] == DBNull.Value ){
    theTime = null;
} else {
    theTime = (DateTime) table["TheColumn"];
}
3
ответ дан 8 December 2019 в 16:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: