Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mengendalikan Nilai DBNull Apabila Menetapkan kepada Parameter SQL dalam C#?

Bagaimana Mengendalikan Nilai DBNull Apabila Menetapkan kepada Parameter SQL dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-11 08:48:45
asal
996 orang telah melayarinya

How to Handle DBNull Values When Assigning to SQL Parameters in C#?

Tidak boleh memberikan nilai DBNull kepada SqlParameter

Apabila cuba memberikan nilai nol kepada SqlParameter, kod berikut akan melaporkan ralat:

SqlParameter[] parameters = new SqlParameter[1];    
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex == null) ? DBNull.Value : AgeItem.AgeIndex;
parameters[0] = planIndexParameter;
Salin selepas log masuk

Masalahnya ialah pengendali ?: tidak dapat menentukan jenis pulangan kerana ia mungkin nilai jenis int atau nilai jenis DBNull dan kedua-duanya tidak serasi.

Penyelesaian:

Untuk menyelesaikan masalah ini, anda boleh memilih kaedah berikut:

  • Penghantaran: Menghantar tika AgeIndex untuk menaip objek, yang memenuhi keperluan pengendali ?::
SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; 
Salin selepas log masuk
  • Gunakan pengendali penyatuan null: Gunakan operator penyatuan null:
SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; 
Salin selepas log masuk

Menurut dokumentasi MSDN untuk operator ?:, first_expression dan second_expression mestilah daripada jenis yang sama atau satu jenis boleh ditukar secara tersirat kepada yang lain.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai DBNull Apabila Menetapkan kepada Parameter SQL dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan