Вопрос о сравнении типов ASP.NET и DBNull
Вопрос
У меня есть функция, которая извлекает записи статей из базы данных MSSQL.Некоторые из них являются URL-адресами PDF-файлов, а другие - реальными статьями, хранящимися в SQL.Статьи, которые хранятся, не имеют URL (DBNull) в записи, поэтому я хочу иметь возможность проанализировать это.Я попробовал провести простой тест:
If Row.Item("url").GetType Is GetType(DBNull) Then
//' do something here....
End If
Тем не менее, я получаю "Conversion from type 'DBNull' to type 'String' is not valid.
- исключение.Самое смешное, что когда я выполняю просмотр по приведенному выше условию, оно возвращает True
или False
.
Кто-нибудь знает, почему это происходит и / или как это исправить?Спасибо!
Решение
Почему бы просто не использовать:
If Row.IsNull("url") Then
//' do something here....
End If
Другие советы
Я всегда просто использую этот тест для записи:
If IsDBNull(strSQLTiggRes("url")) Then
'Do something .
Else
'do something else
end if
Мне нравится
if (DBNull.Value.Equals(Row.Item("url")))
Попробуй
If Row.Item("url") = DBNull.Value
Ошибка заключается в том, что вы сообщаете вам, что Row.Item("url")
является System.String
таким образом, значение на данный момент не будет DbNull
.
Попробуйте что-то вроде этого:
If Row.Item("url") Is Nothing Then
//' do something here....
End If
Разве ты не можешь просто сделать
If Row.Item("url") = DBNull.Value Then
End If
Мое предпочтение заключается в следующем:
If Not Object.Equals(DBNull.Value, Row.Item("url")) Then
'Hooray!
End If
В VB вы также можете использовать IsDBNull
функция (Microsoft.VisualBasic
отказ от ответственности) напрямую :
If Not IsDBNull(Row.Item("url")) Then
'Hooray!
End It
Используй это.
if row("ColumnName") is DBNull.value Then
'do something
end if
Вы обнаружите, что в этом случае вы должны использовать is, и вам нужно сравнивать значения, а не только типы.Возможно, вы также захотите поместить его в повторно используемую функцию, которую можно использовать для возврата nothing вместо dbnull
function checkvalue(item as object)
if item is dbnul.value then
return nothing
else
return item
end if
end function