1

我有一个从 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.”异常。有趣的是,当我对上述条件进行观察时,它返回Trueor False

任何人都知道为什么会发生这种情况和/或解决此问题的方法吗?谢谢!

4

8 回答 8

2

我总是在记录中使用这个测试:

If IsDBNull(strSQLTiggRes("url")) Then
     'Do something                   .
Else
     'do something else
end if
于 2009-05-29T17:12:17.847 回答
1

我喜欢

if (DBNull.Value.Equals(Row.Item("url")))
于 2009-05-29T17:09:45.523 回答
1

为什么不直接使用:

If Row.IsNull("url") Then
    //' do something here....
End If
于 2009-05-29T17:16:40.507 回答
0

尝试

If Row.Item("url") = DBNull.Value
于 2009-05-29T17:07:32.283 回答
0

错误告诉你那Row.Item("url")是 aSystem.String所以此时的值不会是DbNull

尝试这样的事情:

If Row.Item("url") Is Nothing Then
    //' do something here....
End If
于 2009-05-29T17:08:07.943 回答
0

你不能就这样吗

If Row.Item("url") = DBNull.Value Then

End If
于 2009-05-29T17:09:55.727 回答
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
于 2009-05-29T17:13:43.103 回答
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
于 2009-05-29T17:40:19.943 回答