2014-12-02 123 views
-1

enter image description here兩個相同的記錄不反應相同的方式

我有一個數據如圖圖片。當我取回我的記錄有記錄 用於記錄ID = 53不同的行爲,當我有

myReader.IsDBNull(myReader.GetOrdinal("ExpirationByDate")) 

發送回真的,但2其餘它發回假。我不知道如何檢查任何想法表示讚賞

回答

0

GetOrdinal返回給定的列名,並沒有其他的列索引問題

。因此你的代碼沒有意義。

MSDN

GetOrdinal首先執行區分大小寫的查找。如果失敗,則會發生一次不區分大小寫的搜索(使用數據庫歸類完成不區分大小寫的比較 ),然後執行 秒。當文化特定的套管規則影響比較時,可能會出現意外結果 。對於 示例,在土耳其語中,以下示例產生了錯誤的結果 ,因爲土耳其文件系統不使用語言套管 關於「文件」中字母'i'的規則。如果從零開始的列序號不 發現

你想要做reader.IsDBNull(myReader["ExpirationByDate"])的方法拋出 IndexOutOfRange例外?

我會做:

var value = myReader["ExpirationByDate"]; 
var myBool = value is DbNull ? DefaultSetting : (bool)value; 

恕我直言,這是更容易閱讀。

相關問題