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

Menangani ExecuteScalar() saat tidak ada hasil yang dikembalikan

Menurut dokumentasi MSDN untuk DbCommand.ExecuteScalar:

Jika kolom pertama dari baris pertama dalam kumpulan hasil tidak ditemukan, referensi batal (Tidak ada dalam Visual Basic) dikembalikan. Jika nilai dalam database adalah null, kueri mengembalikan DBNull.Value.

Perhatikan cuplikan berikut:

using (var conn = new OracleConnection(...)) {
    conn.Open();
    var command = conn.CreateCommand();
    command.CommandText = "select username from usermst where userid=2";
    string getusername = (string)command.ExecuteScalar();
}

Saat run-time (diuji di bawah ODP.NET tetapi harus sama di bawah penyedia ADO.NET mana pun), ia berperilaku seperti ini:

  • Jika baris tidak ada, hasil dari command.ExecuteScalar() adalah null, yang kemudian dicor ke string null dan ditetapkan ke getusername .
  • Jika baris ada, tetapi memiliki NULL di nama pengguna (apakah ini mungkin di DB Anda?), hasil dari command.ExecuteScalar() adalah DBNull.Value , menghasilkan InvalidCastException .

Bagaimanapun, NullReferenceException seharusnya tidak mungkin, jadi masalah Anda mungkin terletak di tempat lain.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana mengubah nls_date_format default untuk klien Oracle jdbc

  2. ORA-08177:tidak dapat membuat serial akses untuk transaksi ini

  3. Masalah penasaran dengan Oracle UNION dan ORDER BY

  4. Bagaimana Cara Mengekspor Tabel Ke CSV Menggunakan Oracle SQL Developer?

  5. Perbedaan antara klausa ON dan WHERE dalam tabel SQL bergabung