Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak sprawdzić, czy wartość DataReader nie jest pusta?

Nothing oznacza, że ​​obiekt nie został zainicjowany, DBNull oznacza, że ​​dane nie są zdefiniowane/brakuje. Istnieje kilka sposobów sprawdzenia:

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

GetDateTime Metoda jest problematyczna, ponieważ prosisz ją o przekonwertowanie wartości niebędącej wartością na DateTime. Item() zwraca obiekt, który można łatwo przetestować przed konwersja.

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

Możesz także DbReader. Działa to tylko z indeksem porządkowym, a nie z nazwą kolumny:

If myReader.IsDbNull(index) Then 

Na tej podstawie możesz połączyć funkcje jako elementy klasy Shared lub przerobione na rozszerzenia, aby przetestować DBNull i zwrócić wartość domyślną:

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

Użycie:

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

W przypadku konwertera DateTime musisz zdecydować, co zwrócić. Wolę robić to indywidualnie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. programowe sprawdzanie pod kątem otwartego połączenia w JDBC

  2. Jak wyeksportować schemat bazy danych w Oracle do pliku zrzutu?

  3. pobrać parametr z procedury składowanej?

  4. Funkcja LTRIM() w Oracle

  5. Przyrostowe zbieranie statystyk w 11g