Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie überprüfe ich, ob der DataReader-Wert nicht null ist?

Nothing bedeutet, dass ein Objekt nicht initialisiert wurde, DBNull bedeutet, dass die Daten nicht definiert sind/fehlen. Es gibt mehrere Möglichkeiten, dies zu überprüfen:

' The VB Function
If IsDBNull(Reader.Item(0)) Then...

Die GetDateTime -Methode ist problematisch, da Sie sie auffordern, einen Nichtwert in DateTime zu konvertieren. Item() liefert ein Objekt, das einfach vorher getestet werden kann konvertieren.

 ' System Type
 If System.DBNull.Value.Equals(...)

Sie können auch den DbReader. Dies funktioniert nur mit dem Ordinalindex, nicht mit einem Spaltennamen:

If myReader.IsDbNull(index) Then 

Darauf basierend können Sie Funktionen entweder als Shared-Klassenmitglieder zusammenstellen oder in Erweiterungen umarbeiten, um auf DBNull zu testen und einen Standardwert zurückzugeben:

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

Verwendung:

myDate = SafeConvert.ToDateTime(Reader.Item(0))

Bei einem DateTime-Konverter müssten Sie entscheiden, was zurückgegeben werden soll. Ich mache das lieber einzeln.