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.」例外が発生します。Trueおもしろいのは、上記の条件を監視すると、 orが返されること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("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 に答える
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.Item("url") = DBNull.Value
于 2009-05-29T17:07:32.283 に答える
0

エラーは が であることを示しRow.Item("url")ているSystem.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 に答える