обработка dbnull данные в vb.net

72
задан Community 23 May 2017 в 12:26
поделиться

6 ответов

Единственный способ, о котором я знаю, состоит в том, чтобы протестировать на него, можно сделать объединенное если, хотя облегчить.

If NOT IsDbNull(myItem("sID")) AndAlso myItem("sID") = sId Then
   'Do success
ELSE
   'Failure
End If

я записал в VB как, именно похоже, что Вам нужно, даже при том, что Вы смешали языки.

Редактирование

Очищенный для использования IsDbNull для создания его больше читаемый

128
ответ дан Mitchel Sellers 24 November 2019 в 12:32
поделиться

Можно также использовать Преобразование. ToString () и Преобразовывают. ToInteger () методы для преобразования объектов с пустым указателем DB effectivly.

8
ответ дан Mitchel Sellers 24 November 2019 в 12:32
поделиться

Можно использовать функцию IsDbNull:

  If  IsDbNull(myItem("sID")) = False AndAlso myItem("sID")==sID Then
    // Do something
End If
1
ответ дан brendan 24 November 2019 в 12:32
поделиться

Для строк, содержащих строки, я могу преобразовать их в строки как в изменении

tmpStr = nameItem("lastname") + " " + nameItem("initials")

к

tmpStr = myItem("lastname").toString + " " + myItem("intials").toString

Для сравнения в , если оператор myItem ("SID") =sID , это должно быть изменение в

myItem("sID").Equals(sID)

Тогда, код будет работать без любых ошибок периода выполнения из-за данные vbNull .

1
ответ дан Azim 24 November 2019 в 12:32
поделиться

Microsoft придумала DBNull в .NET 1.0 для представления NULL базы данных. Однако это неудобно, потому что вы не можете создать строго типизированную переменную для хранения подлинного значения или null. Microsoft решила эту проблему в .NET 2.0 с помощью типов, допускающих значение NULL. Однако вы по-прежнему застряли с большими кусками API, которые используют DBNull, и их нельзя изменить.

Просто предложение, но обычно я делаю следующее:

  1. Все переменные, содержащие данные, считываемые или записываемые в база данных должна иметь возможность обрабатывать нулевые значения. Для типов значений это означает сделать их Nullable (Of T). Для ссылочных типов (String и Byte ()) это означает, что значение может быть Nothing.
  2. Напишите набор функций для преобразования назад и вперед между «объектом, который может содержать DBNull» и «переменной .NET, допускающей значение NULL». Оберните все вызовы API в стиле DBNull в этих функциях, а затем представьте, что DBNull не существует.
3
ответ дан 24 November 2019 в 12:32
поделиться

Мне надоело решать эту проблему, поэтому я написал функцию NotNull (), чтобы помочь мне.

Public Shared Function NotNull(Of T)(ByVal Value As T, ByVal DefaultValue As T) As T
        If Value Is Nothing OrElse IsDBNull(Value) Then
                Return DefaultValue
        Else
                Return Value
        End If
End Function

Использование:

If NotNull(myItem("sID"), "") = sID Then
  ' Do something
End If

Моя функция NotNull () прошла через несколько капитальный ремонт с годами. До Generics я просто указывал все как объект. Но я предпочитаю универсальную версию.

33
ответ дан 24 November 2019 в 12:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: