2013-04-23 2 views
0

У меня есть база данных, где в столбце нет значения (так что это null), но я не могу справиться с этим в vb.net. Я пытался с этим кодом:vb.net - читать значение null из базы данных

  reader.Read() 
      If String.IsNullOrEmpty(reader.GetString(0)) Then 
       Return 
      Else 
       tilbulfolderTextBox.Text = reader.GetString(0) 
      End If 

, а также с:

If reader.Read() = False Then 

и с:

If IsDBNull(reader.Read()) Then 

Но, видимо, это не работает, потому что я получаю исключение заявление после того, Else, что я не могу получить значения Null с помощью этого метода. Я думаю, вы поймете, что мне требуется от программы, прочитав сам код.

ответ

3

IsDBNull метод базового объекта DbDataReader определяется справиться с этой ситуацией.
Конечно, вы не можете попробовать что-то прочитать, если reader.Read() возвращает с ложными (то есть не больше строк доступны)

If reader.Read() Then 
     If reader.IsDBNull(0) Then 
      Return 
     Else 
      tilbulfolderTextBox.Text = reader.GetString(0) 
     End If 
    End If 

Кроме того, я не вижу больше кода, но имейте в виду, что возвращение таким образом может быть очень неправильным, если вы не закрываете соединение и не уничтожаете объекты, участвующие в этой операции.

И, да, как указывали другие, есть также функция IsDBNull от сборку Microsoft.VisualBasic, но я предпочитаю использовать методы, предоставляемые классами, определенными в основной среде .NET, а не те, которые предусмотрены для совместимости с предыдущими версиями VB

2

.Net имеет другой тип обработки SQL NULL: DbNull.

Проверьте это сообщение о том, как справиться с этим: handling dbnull data in vb.net

В вашем случае, вам нужна функция IsDbNull, проверить это MSDN Documentation об этом.

If IsDbNull(data) Then 
    return 
Else 
    tilbulfolderTextBox.Text = data 
End If 
2

использование IsDBNull функции для того, чтобы значение из DataReader равно нулю или нет. Затем выполните поток кода.

2

Похоже, ваш IF не может работать должным образом

Попробуйте использовать IsDBNull вместо этого.

IsDBNull - это логическая переменная и может использоваться как следующее;

reader.Read() 

If Not IsDbNull(reader.GetString(0)) Then 
    tilbulfolderTextBox.Text = reader.GetString(0) 
Else 
    return 
End If 
3

Вы должны использовать IsDbNull функцию comapre его null:

 reader.Read() 
     If IsDbNull(reader(0)) OrElse String.IsNullOrEmpty(reader.GetString(0)) Then 
      Return 
     Else 
      tilbulfolderTextBox.Text = reader.GetString(0) 
     End If 
2

попробовать этот

reader.Read() 
     If IsDbNull(reader.GetString(0)) Then 
      Return 
     Else 
      tilbulfolderTextBox.Text = reader.GetString(0) 
     End If 
Смежные вопросы