首頁 >後端開發 >C++ >在 C# 中指派給 SQL 參數時如何處理 DBNull 值?

在 C# 中指派給 SQL 參數時如何處理 DBNull 值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-11 08:48:45973瀏覽

How to Handle DBNull Values When Assigning to SQL Parameters in C#?

無法將 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 類型值,兩者不相容。

解:

解決此問題,您可以選擇以下幾種方法:

  • 強制型別轉換: 強制 AgeIndex 實例轉換為 object 型,這可以滿足 ?: 運算子的要求:
<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn