Mengendalikan Nilai Null dalam Objek C# SqlParameter
Menetapkan nilai nol secara langsung kepada SqlParameter
objek menggunakan operator ternary (?:) selalunya mengakibatkan ralat tidak padan jenis seperti "Tiada penukaran tersirat daripada DBNull kepada int". Ini berlaku kerana pengendali ternary memerlukan kedua-dua ungkapan daripada jenis yang serasi dan int
dan DBNull
tidak serasi.
Penyelesaian Pilihan: Operator Penggabungan Null (??) dan Casting Eksplisit
Penyelesaian yang paling cekap dan boleh dibaca memanfaatkan operator penggabungan nol (??). Operator ini secara elegan mengendalikan nilai nol dengan mengembalikan operan kiri jika ia bukan nol; jika tidak, ia mengembalikan operan sebelah kanan. Digabungkan dengan penghantaran eksplisit ke object
, ini memastikan keserasian jenis:
<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>
Coretan kod ini mula-mula cuba menggunakan nilai AgeItem.AgeIndex
. Jika ia batal, ia lalai kepada DBNull.Value
. Pelakon (object)
memastikan ungkapan sentiasa mengembalikan objek, memenuhi keperluan pengendali ternary.
Alternatif: Pemutus Bersyarat
Walaupun kurang ringkas, lakonan bersyarat juga mencapai hasil yang diingini:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (AgeItem.AgeIndex == null) ? (object)DBNull.Value : (object)AgeItem.AgeIndex; parameters[0] = planIndexParameter;</code>
Pendekatan ini secara eksplisit menyemak nol dan membuang kedua-dua DBNull.Value
dan AgeItem.AgeIndex
kepada object
untuk keserasian.
Nota Penting: Kunci untuk mengelakkan ralat jenis terletak pada memastikan ketekalan jenis dalam ekspresi operator ternary. Penghantaran eksplisit kepada jenis biasa, seperti object
, adalah penting apabila berurusan dengan nilai nullable dan parameter pangkalan data. Operator penggabungan null menyediakan penyelesaian yang lebih elegan dan boleh dibaca untuk senario khusus ini.
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Nilai NULL dengan betul ke SqlParameter dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!