Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara memeriksa apakah nilai DataReader bukan nol?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 Cara Menemukan Baris yang Mengandung Huruf Kecil di Oracle

  2. Fungsi NLS_CHARSET_DECL_LEN() di Oracle

  3. Bagaimana cara menyampaikan argumen ke skrip PL/SQL pada baris perintah dengan SQLPLUS?

  4. Nonaktifkan semua batasan tabel di Oracle

  5. Berikan Pilihan pada semua Tabel yang Dimiliki Oleh Pengguna Tertentu