首頁 > 後端開發 > C++ > 如何在 C# 中正確地將 NULL 值指派給 SqlParameter?

如何在 C# 中正確地將 NULL 值指派給 SqlParameter?

Barbara Streisand
發布: 2025-01-10 22:42:49
原創
997 人瀏覽過

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

處理 C# SqlParameter 物件中的空值

使用三元運算子 (?:) 直接將 null 值指派給 SqlParameter 物件通常會導致類型不符合錯誤,例如「沒有從 DBNull 到 int 的隱式轉換」。 出現這種情況是因為三元運算子要求兩個表達式的類型相容,而 intDBNull 不相容。

首選解:空白合併運算子 (??) 和明確轉換

最高效且可讀的解決方案利用空合併運算符 (??)。此運算子透過傳回左側操作數(如果它不為空)來優雅地處理空值;否則,它會傳回右側操作數。 與明確轉換為 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>
登入後複製

此程式碼片段首先嘗試使用 AgeItem.AgeIndex 值。如果為空,則預設為DBNull.Value(object) 強制轉換確保表達式始終傳回一個對象,滿足三元運算子的要求。

替代方案:條件選角

雖然不太簡潔,但條件轉換也達到了預期的結果:

<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>
登入後複製

此方法明確檢查 null 並將 DBNull.ValueAgeItem.AgeIndex 強制轉換為 object 以實現相容性。

重要提示:避免型別錯誤的關鍵在於確保三元運算子表達式的型別一致性。 在處理可為空值和資料庫參數時,明確轉換為常見類型(例如 object)至關重要。 空合併運算子為這種特定場景提供了更優雅、更易讀的解決方案。

以上是如何在 C# 中正確地將 NULL 值指派給 SqlParameter?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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