Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> System.Nullable<Type> 
:(
    Опции темы
Idsa
Дата 22.8.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Сегодня натолкнулся (вернее, меня натолкнул tol05 smile ) на то, что если в БД ячейка имеет значение null, в результате запроса ExecuteScalar, ExecuteQuery... на выходе мы получим не null, а DbNull.Value. С другой стороны, если запрошенной строки нет, то ExecuteScalar вернет null.
Возникает вопрос, почему DbNull.Value автоматически не приводится к null, ведь это было бы очень удобно. К тому же подобный подход дискредитирует System.Nullable<Type> (aka type?). Ведь System.Nullable был добавлен в C# 2.0 именно для облегчения работы с БД... но на деле получается, что применение этого типа очень ограниченно (из-за DbNull).
Собственно, хотелось бы услышать, что стало причиной разделения DbNull и null... ну неужели чисто логическая разница между "пустыми" ссылками и "пустым" содержимым ячейки таблицы?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
tol05
Дата 22.8.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 11
Всего: 170



Цитата

null — данные из базы не читались вовсе
DBNull — данные прочитали, там оказался null

взято отсюда

P.S. еще ссылка

Это сообщение отредактировал(а) tol05 - 22.8.2007, 18:30


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Idsa
Дата 22.8.2007, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(tol05 @  22.8.2007,  18:19 Найти цитируемый пост)
null — данные из базы не читались вовсе

Скорее, данные не были найдены.

Лаконично суть выглядит следующим образом:
Цитата

So, comparing the ExecuteScalar() to null means, we are checking if there is a record returned, and checking if value of the first column of the first row is null or not, means we need to check against DBNul..Value


Порой такое разделение доставляет хлопоты...  но очевидно, что в нем есть смысл (хотя некоторые принимают это за баг MS smile ).


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0689 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.