Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apa cara terbaik untuk menangani DBNull's

Tipe nullable bagus, tetapi hanya untuk tipe yang awalnya tidak nullable.

Untuk membuat tipe menjadi "nullable" tambahkan tanda tanya pada tipe tersebut, misalnya:

int? value = 5;

Saya juga merekomendasikan menggunakan "as " kata kunci alih-alih casting. Anda hanya dapat menggunakan kata kunci "sebagai" pada jenis nullable, jadi pastikan Anda mentransmisikan hal-hal yang sudah nullable (seperti string) atau Anda menggunakan jenis nullable seperti yang disebutkan di atas. Alasannya adalah

  1. Jika suatu jenis dapat dibatalkan, "as " kata kunci mengembalikan null jika nilainya DBNull .
  2. Ini sedikit lebih cepat daripada casting meskipun hanya dalam kasus tertentu. Ini sendiri tidak pernah menjadi alasan yang cukup baik untuk menggunakan as , tapi ditambah dengan alasan di atas semoga bermanfaat.

Saya akan merekomendasikan melakukan sesuatu seperti ini

DataRow row = ds.Tables[0].Rows[0];
string value = row as string;

Dalam kasus di atas, jika row kembali sebagai DBNull , lalu value akan menjadi null alih-alih melempar pengecualian. Ketahuilah bahwa jika kueri DB Anda mengubah kolom/tipe yang dikembalikan, menggunakan as akan menyebabkan kode Anda gagal secara diam-diam dan buat nilai menjadi sederhana null daripada membuang pengecualian yang sesuai saat data yang salah dikembalikan, jadi sebaiknya Anda melakukan pengujian untuk memvalidasi kueri Anda dengan cara lain guna memastikan integritas data seiring dengan berkembangnya basis kode Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kembalikan Nilai Kenaikan dari Kolom Identitas di SQL Server

  2. Menerapkan Pencarian Teks Lengkap di SQL Server 2016 untuk Pengguna Tingkat Lanjut

  3. Pembaruan SQL dengan row_number()

  4. Bagaimana cara mengatur variabel dari kueri SQL?

  5. Pencarian Fuzzy SQL Server dengan Persentase kecocokan