Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menetapkan Nilai NULL dengan betul ke SqlParameter dalam C#?

Bagaimana untuk Menetapkan Nilai NULL dengan betul ke SqlParameter dalam C#?

Barbara Streisand
Lepaskan: 2025-01-10 22:42:49
asal
997 orang telah melayarinya

How to Properly Assign NULL Values to SqlParameter in C#?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
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