錯誤說明:
錯誤訊息「無法將物件從 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中文網其他相關文章!