Как проверить на нулевые значения? - PullRequest
0 голосов
/ 22 апреля 2009

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

Я пытался

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

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

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

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

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

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

Ответы [ 5 ]

6 голосов
/ 22 апреля 2009

Попробуйте:

Если (data == System.DBNull)

1 голос
/ 22 апреля 2009

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

if(data.GetColumnValue("Column Name") == null)
{
    ...
}
0 голосов
/ 22 апреля 2009

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

Пример SQL

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

или

Select isNUll(columnName, 'N/A') FROM TABLENAME ...
0 голосов
/ 22 апреля 2009

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

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

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

if (reader ["colname") == DBNull.Value)

0 голосов
/ 22 апреля 2009

, если ваша переменная data является строго типизированным datarow, это может помочь:

if(data.IsNull("ColumnName")) { ... }
...