2012年6月13日 星期三

關於C#裡 System.DBNull.Value & Convert.IsDBNull 的迷思

繼續自話題關於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"]);
參考資料:

沒有留言:

張貼留言