繼續自話題關於C#裡 System.DBNull.Value & Convert.IsDBNull 的迷思:
原貼為:
想請教一下, 在C# 裡, 我要判斷資料表欄位是否為 Null 值, 是要用
if (DataTable.Rows[0][0] == System.DBNull.Value)
{
}
還是要用
if (Convert.IsDBNull(DataTable.Rows[0][0]))
{
}
那一個來做比較好? 為什麼?
正確的答案是:
Convert.IsDBNull 比較好。
為什麼?
DataTable.Rows[0][0] 傳回來的值,或說取自資料庫的值,傳回的型別大都是Object,必須要先利用轉型才可以正確判斷。
使用 if (DataTable.Rows[0][0] == System.DBNull.Value) 大都是False,微軟不會沒事找事做,微軟的東西也會經過一定的測試流程才發佈出來,
盡量使用可靠的東西準沒錯。
備註:
我遇到的錯誤情況是
if (tr["Tradition"] != DBNull.Value) btrTradition.ReportComplete = Convert.ToDateTime(tr["Tradition"]);
參考資料:
沒有留言:
張貼留言