我有一个从MSSQL数据库中提取文章记录的函数。一些是PDF的URL,另一些是存储在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
。
任何人都知道为什么会发生这种情况和/或解决此问题的方法?谢谢!
答案 0 :(得分:2)
我总是在记录中使用此测试:
If IsDBNull(strSQLTiggRes("url")) Then
'Do something .
Else
'do something else
end if
答案 1 :(得分:1)
我喜欢
if (DBNull.Value.Equals(Row.Item("url")))
答案 2 :(得分:1)
为什么不使用:
If Row.IsNull("url") Then
//' do something here....
End If
答案 3 :(得分:0)
尝试
If Row.Item("url") = DBNull.Value
答案 4 :(得分:0)
错误告诉您Row.Item("url")
是System.String
,因此此时的值不会是DbNull
。
尝试这样的事情:
If Row.Item("url") Is Nothing Then
//' do something here....
End If
答案 5 :(得分:0)
你不能这样做吗
If Row.Item("url") = DBNull.Value Then
End If
答案 6 :(得分:0)
我的偏好是:
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
答案 7 :(得分:0)
使用此功能。
if row("ColumnName") is DBNull.value Then
'do something
end if
你会发现在这种情况下你必须使用is,你需要比较值而不仅仅是类型。您可能还想将其放入可重用的函数中,您可以使用它来返回任何内容而不是dbnull
function checkvalue(item as object)
if item is dbnul.value then
return nothing
else
return item
end if
end function