首頁 > 後端開發 > C++ > 如何處理 C# 中的「物件無法從 DBNull 轉換為其他類型」錯誤?

如何處理 C# 中的「物件無法從 DBNull 轉換為其他類型」錯誤?

DDD
發布: 2025-01-11 15:06:42
原創
1137 人瀏覽過

How to Handle

無法將物件從 DBNull 轉換為其他類型

錯誤說明:

錯誤訊息「無法將物件從 DBNull 轉換為其他類型」表示嘗試將 DBNull 值(表示資料庫中的空值)轉換為不可為空的類型(在本例中為 Int64)失敗了。

錯誤原因:

在提供的程式碼中,以下行嘗試將名為「op_Id」的輸出參數的值轉換為 Int64:

<code>DataTO.Id = Convert.ToInt64(dataAccCom.GetParameterValue(IDbCmd, "op_Id"));</code>
登入後複製

如果預存程序為此參數傳回了 DBNull 值,則轉換將失敗並導致錯誤。

解:

要解決此問題,請在嘗試轉換之前明確檢查輸出參數的值是否為 DBNull。如果是 DBNull,則將 null 或預設值賦給 DataTO 物件中對應的屬性。以下是更新後的程式碼:

<code>var outputParam = dataAccCom.GetParameterValue(IDbCmd, "op_Id");
if (outputParam != DBNull.Value)
    DataTO.Id = Convert.ToInt64(outputParam);
else
    DataTO.Id = null; // 或分配默认值,例如 0 或 -1</code>
登入後複製

這種修改確保了在處理資料庫中可能存在的空值時,程式碼的健全性。 使用 outputParam != DBNull.Value!(outputParam is DBNull) 更簡潔明了,並且在性能上沒有顯著差異。 選擇將 DataTO.Id 設為 null 還是一個預設值取決於您的應用程式邏輯和 DataTO.Id 屬性的類型是否允許為空。

以上是如何處理 C# 中的「物件無法從 DBNull 轉換為其他類型」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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