Nothing
オブジェクトが初期化されていないことを意味します。DBNull
データが定義されていない/欠落していることを意味します。確認する方法はいくつかあります:
' The VB Function
If IsDBNull(Reader.Item(0)) Then...
GetDateTime
非値をDateTimeに変換するように要求しているため、このメソッドには問題があります。 Item()
前に簡単にテストできるオブジェクトを返します 変換します。
' System Type
If System.DBNull.Value.Equals(...)
DbReaderもできます。これは、列名ではなく、序数インデックスでのみ機能します:
If myReader.IsDbNull(index) Then
これに基づいて、Sharedクラスのメンバーとして関数をまとめるか、Extensionsに作り直して、DBNullをテストし、デフォルト値を返すことができます。
Public Class SafeConvert
Public Shared Function ToInt32(Value As Object) As Integer
If DBNull.Value.Equals(Value) Then
Return 0
Else
Return Convert.ToInt32(Value)
End If
End Function
Public Shared Function ToInt64(Value As Object) As Int64
If DBNull.Value.Equals(Value) Then
Return 0
Else
Return Convert.ToInt64(Value)
End If
End Function
' etc
End Class
使用法:
myDate = SafeConvert.ToDateTime(Reader.Item(0))
DateTimeコンバーターの場合、何を返すかを決定する必要があります。私はそれらを個別に行うことを好みます。