Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengendalikan Nilai DBNull Apabila Menetapkan kepada Parameter SQL dalam 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:
<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>
<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!