Как проверить нулевые значения?

У меня есть целочисленный столбец, который может иметь номер или ничего не назначенное ему (т.е. null в базе данных). Как я могу проверить, является ли он нулевым или нет?

я пытался

if(data.ColumnName == null)
{
    ...
}

Это тоже не работает (поскольку SubSonic не использует типы, допускающие значение NULL (если применимо) для ActiveRecord)

if(data.ColumnName.HasValue)
{
    ...
}

Если значение, хранящееся в базе данных, равно 0, это не поможет:

if(data.ColumnName == 0 /* or 0x000? */)
{
    ...
}

Та же проблема может возникнуть и с полями DateTime.


person SamWM    schedule 22.04.2009    source источник


Ответы (5)


Пытаться:

Если (данные == System.DBNull)

person jgallant    schedule 22.04.2009
comment
За исключением того, что это не компилируется. Вы имеете в виду либо {data == System.DBNull.Value}, либо {data is System.DBNull}. - person configurator; 22.04.2009
comment
Да, должен признать, я написал так быстро и не подумал об этом. - person jgallant; 22.04.2009

Узнал, как это сделать. В SubSonic есть метод получения значения в виде объекта, позволяющий выполнить нулевую проверку:

if(data.GetColumnValue("Column Name") == null)
{
    ...
}
person SamWM    schedule 22.04.2009

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

if(data.IsNull("ColumnName")) { ... }
person Canavar    schedule 22.04.2009
comment
данные - это SubSonic ActiveRecord - person SamWM; 22.04.2009

DBNull - это значение пустого столбца.

DBNull - это тип значения. Типы значений не могут быть нулевыми.

Предполагая, что SqlDataReader ... проверка на null:

если (читатель ["colname") == DBNull.Value)

person Chad Grant    schedule 22.04.2009

При запросе базы данных обрабатывайте там null, что значительно упрощает вашу жизнь в коде

Пример SQL

SELECT isNull(columnName, 0) FROM TABLENAME...

or

Select isNUll(columnName, 'N/A') FROM TABLENAME ...
person WACM161    schedule 22.04.2009