無法將 DBNull 值賦給 SqlParameter
嘗試將空值賦給 SqlParameter 時,以下程式碼會報錯:
<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>
問題在於 ?: 運算子無法確定回傳類型,因為它可能是 int 類型值,也可能是 DBNull 類型值,兩者不相容。
解:
解決此問題,您可以選擇以下幾種方法:
<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>
根據 MSDN 文件對 ?: 運算子的說明,first_expression 和 second_expression 的類型必須相同,或者其中一個類型可以隱式轉換為另一個類型。
以上是在 C# 中指派給 SQL 參數時如何處理 DBNull 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!