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
Mary-Kate Olsenasal
2025-01-11 08:48:45968semak imbas

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:

<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];    
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex == null) ? DBNull.Value : AgeItem.AgeIndex;
parameters[0] = planIndexParameter;</code>

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 ?::
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; </code>
  • Gunakan pengendali penyatuan null: Gunakan operator penyatuan null:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; </code>

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:
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