sql >> Database teknologi >  >> RDS >> Oracle

Hvordan kontrollerer man, om DataReader-værdien ikke er null?

Nothing betyder, at et objekt ikke er blevet initialiseret, DBNull betyder, at data ikke er defineret/mangler. Der er flere måder at kontrollere:

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

GetDateTime metoden er problematisk, fordi du beder den om at konvertere en ikke-værdi til DateTime. Item() returnerer Objekt, som nemt kan testes før konvertering.

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

Du kan også DbReader. Dette virker kun med ordensindekset, ikke et kolonnenavn:

If myReader.IsDbNull(index) Then 

Baseret på det kan du sammensætte funktioner enten som delte klassemedlemmer eller omarbejdet til udvidelser for at teste for DBNull og returnere en standardværdi:

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

Brug:

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

For en DateTime-konvertering skal du beslutte, hvad du vil returnere. Jeg foretrækker at gøre dem individuelt.



  1. Sammenkæd rækkeværdier T-SQL

  2. Avanceret SQL:Indsæt output fra den parametriserede tabelværdi-funktion i SQL-tabel

  3. Få forespørgsel fra fil i SPRING BOOT ved hjælp af @Query

  4. Sådan indsætter du et linjeskift i en SQL Server VARCHAR/NVARCHAR streng