2013-02-16 2 views
1

Определение проблемы: У меня есть таблица в базе данных SQL Server. В этой таблице есть столбец типа image и он допускает нулевые значения. Я прочитаю эту таблицу, используя SqlDataReader и покажу изображения, если они доступны.Каков наилучший способ узнать, является ли столбец изображения нулевым или нет?

То, что я пытался в первый раз: Для того, чтобы проверить, является ли нулевой столбец изображение или нет, я сделал это

SqlDataReader reader = command.ExecuteReader(); // command is a SqlCommand 

while(reader.Read()) 
{ 
    if(reader["Image"] != null)  // Image is a column name of the table 
    { 
     //Do something 
    } 
} 

Результат: Но он никогда не равен нулю (я также проверил метод Equal). Этот столбец никогда не является нулевым, даже если он не вставлен в данные (в SQL Server я вижу, что это фактически нулевое значение)

Что я пробовал второй раз: Итак, я пробовал этот код и его работу, но мне интересно, t return null.

SqlDataReader reader = command.ExecuteReader(); // command is a SqlCommand 

while(reader.Read()) 
{ 
    if(reader["Image"].GetType() != typeof(System.DBNull)) 
    { 
     //Do something 
    } 
} 

Вопрос: Любая идея объяснить такое поведение? Я буду рад, если есть лучший способ узнать, являются ли столбцы типа Image в таблицах SQL Server нулевыми или нет.

+0

Вы должны попытаться распечатать все, что вы можете о значении, когда нет данных изображения - с использованием 'else' во второй форме. Это должно привести вас к ответу – Floris

ответ

4

Вы должны просто проверить на DbNull таким образом.

if(reader["Image"] != DbNull.Value)  // Image is a column name of the table 
{ 
    //Do something 
} 
+0

Спасибо. Можете ли вы объяснить, почему он отличается от простого значения «null». –

+0

@HosseinNarimaniRad этот вопрос имеет отличный ответ. http://stackoverflow.com/questions/4488727/what-is-the-point-of-dbnull –

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