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

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

Mary-Kate Olsen
發布: 2025-01-11 08:48:45
原創
993 人瀏覽過

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

無法將 DBNull 值賦給 SqlParameter

嘗試將空值賦給 SqlParameter 時,以下程式碼會報錯:

SqlParameter[] parameters = new SqlParameter[1];    
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex == null) ? DBNull.Value : AgeItem.AgeIndex;
parameters[0] = planIndexParameter;
登入後複製

問題在於 ?: 運算子無法確定回傳類型,因為它可能是 int 類型值,也可能是 DBNull 類型值,兩者不相容。

解:

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

  • 強制型別轉換: 強制 AgeIndex 實例轉換為 object 型,這可以滿足 ?: 運算子的要求:
SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; 
登入後複製
  • 使用空白合併運算子: 使用 ?? 空合併運算子:
SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter; 
登入後複製

根據 MSDN 文件對 ?: 運算子的說明,first_expression 和 second_expression 的類型必須相同,或者其中一個類型可以隱式轉換為另一個類型。

以上是在 C# 中指派給 SQL 參數時如何處理 DBNull 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板