Nothing
berarti objek belum diinisialisasi, DBNull
berarti data tidak terdefinisi/hilang. Ada beberapa cara untuk memeriksa:
' The VB Function
If IsDBNull(Reader.Item(0)) Then...
GetDateTime
metode bermasalah karena Anda memintanya untuk mengonversi nilai non ke DateTime. Item()
mengembalikan Objek yang dapat diuji dengan mudah sebelum mengonversi.
' System Type
If System.DBNull.Value.Equals(...)
Anda juga dapat menggunakan DbReader. Ini hanya berfungsi dengan indeks ordinal, bukan nama kolom:
If myReader.IsDbNull(index) Then
Berdasarkan itu, Anda dapat menggabungkan fungsi baik sebagai anggota kelas Bersama atau dikerjakan ulang menjadi Ekstensi untuk menguji DBNull dan mengembalikan nilai default:
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
Penggunaan:
myDate = SafeConvert.ToDateTime(Reader.Item(0))
Untuk konverter DateTime, Anda harus memutuskan apa yang akan dikembalikan. Saya lebih suka melakukannya secara individu.