Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да проверя дали стойността на DataReader не е нула?

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 

Въз основа на това можете да съберете функции или като споделени членове на класа, или преработени в разширения, за да тествате за 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 трябва да решите какво да върнете. Предпочитам да ги правя индивидуално.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. REGEXP_COUNT() Функция в Oracle

  2. Oracle ORA-12154:TNS:Не може да разреши грешка в името на услугата?

  3. Как да разделите низ, разделен със запетая в Oracle

  4. ТИП Промяна на дефиниция в Oracle 21c

  5. Решение да не може да изпълни DML операция в заявка?