Единственный способ, о котором я знаю, состоит в том, чтобы протестировать на него, можно сделать объединенное если, хотя облегчить.
If NOT IsDbNull(myItem("sID")) AndAlso myItem("sID") = sId Then
'Do success
ELSE
'Failure
End If
я записал в VB как, именно похоже, что Вам нужно, даже при том, что Вы смешали языки.
Редактирование
Очищенный для использования IsDbNull для создания его больше читаемый
Можно также использовать Преобразование. ToString () и Преобразовывают. ToInteger () методы для преобразования объектов с пустым указателем DB effectivly.
Можно использовать функцию IsDbNull:
If IsDbNull(myItem("sID")) = False AndAlso myItem("sID")==sID Then
// Do something
End If
Для строк, содержащих строки, я могу преобразовать их в строки как в изменении
tmpStr = nameItem("lastname") + " " + nameItem("initials")
к
tmpStr = myItem("lastname").toString + " " + myItem("intials").toString
Для сравнения в , если оператор myItem ("SID") =sID , это должно быть изменение в
myItem("sID").Equals(sID)
Тогда, код будет работать без любых ошибок периода выполнения из-за данные vbNull .
Microsoft придумала DBNull в .NET 1.0 для представления NULL базы данных. Однако это неудобно, потому что вы не можете создать строго типизированную переменную для хранения подлинного значения или null. Microsoft решила эту проблему в .NET 2.0 с помощью типов, допускающих значение NULL. Однако вы по-прежнему застряли с большими кусками API, которые используют DBNull, и их нельзя изменить.
Просто предложение, но обычно я делаю следующее:
Мне надоело решать эту проблему, поэтому я написал функцию 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 я просто указывал все как объект. Но я предпочитаю универсальную версию.