2011-01-19 2 views
16

Как я могу проверить значение NULL в открытом MySqlDataReader?Как проверить NULL в MySqlDataReader по имени столбца?

Следующие не работают; это всегда заганяют else:

if (rdr.GetString("timeOut") == null) 
{ 
    queryResult.Egresstime = "Logged in"; 
} 
else 
{ 
    queryResult.Egresstime = rdr.GetString("timeOut"); 
} 

rdr.IsDbNull(int i) принимает только номер столбца, а не имя.

ответ

28
var ordinal = rdr.GetOrdinal("timeOut"); 
if(rdr.IsDBNull(ordinal)) { 
    queryResult.Egresstime = "Logged in"; 
} else { 
    queryResult.Egresstime = rdr.GetString(ordinal); 
}//if 

или

if(Convert.IsDBNull(rdr["timeOut"])) { 
    queryResult.Egresstime = "Logged in"; 
} else { 
    queryResult.Egresstime = rdr.GetString("timeOut"); 
}//if 
+0

Вы победитель 0f ваш собственный зеленый чек. Я использовал второй. Благодаря! – rd42

+0

маленькая опечатка во втором примере: измените «IsDbNull» на «IsDBNull» – 4mla1fn

+0

@ 4mla1fn Спасибо, я отредактировал свой ответ. –

13

если (rdr.GetString ("Timeout") == DBNull.Value)

null не то же самое, как DBNull

Я извиняюсь, неправильный ответ, Сэм B является правильным. Я принял это за DataRow.

SqlDataReader имеет строго типизированный GetString() и предоставляет IsDBNull(int column) для этого случая.

+2

Я думаю, что это должно быть 'DBNull.Value' – VoodooChild

+0

@BoodooChild - спасибо – Axarydax

+0

Вот что я получаю ошибку \t 1: оператор«==»не может быть применен к операндам типа 'string' и 'System.DBNull' – rd42

1

Изменить nullDBNull.Value.

+0

Вот что я получаю Ошибка \t 1: Оператор '==' не может применяться к операндам типа 'string' и 'System.DBNull' - – rd42

1

Вы также можете сделать:

If (string.IsNullOrEmpty(rdr.GetString("timeOut"))

+0

Имеет такой же эффект, как (rdr.GetString ("timeOut") == null) – rd42

+1

@ rd42: так что такое фактическое значение в этом поле при отладке? просто любопытно? – VoodooChild

+0

Значение: 12/7/2010 10:16:46 AM Спасибо за вашу помощь. – rd42

3

Вы должны вызвать rdr.IsDBNull(column), чтобы определить, является ли значение DbNull.

0

Вот один я люблю:

var MyString = rdr["column"] is DBNull ? "It's null!" : rdr.GetString("column"); 

Э.Г. (для первоначального требования):

queryResult.Egresstime = rdr["timeOut"] is DBNull ? "Logged in" : rdr.GetString("timeOut"); 

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

  • Нет связанных вопросов^_^