2014-12-01 71 views
-2

我正在閱讀MySql數據庫,其中一列是DateTime類型。其中一些日期爲空。我似乎無法弄清楚如何檢查值是否爲空。 我認爲IsDBNull以便可以解決這個問題,但它使所有IsDBNull拋出異常

if (!reader.IsDBNull(4)) 
{ 
    service.ServiceDate = reader.GetDateTime("serviceDate"); 
} 

這是我得到的異常沒有什麼區別:

「的其他信息:無法轉換MySQL的日期/時間值 System.DateTime的」

我也試過

if (System.DBNull.Value == reader.IsDBNull(4)) 

以及

reader.IsDBNull(4).ToString() 

Convert.ToBoolean(reader.IsDBNull(4)) 

我如何檢查它不使用嘗試捕捉?

+0

什麼是讀卡器的類型? – faester 2014-12-01 22:33:51

+0

您正在閱讀的日期時間值是什麼?它可能超出System.DateTime的範圍。 – Blorgbeard 2014-12-01 22:34:16

+0

'IsDBNull'不會拋出該錯誤。但'reader.GetDateTime(「serviceDate」)'應該會導致編譯器錯誤,因爲'GetDateTime'只接受一個'int'作爲列的索引參數。顯示你的真實代碼。 – 2014-12-01 22:34:47

回答

3

該錯誤似乎與IsDBNull沒有任何關係 - 它特別提到了DateTime轉換。您是否嘗試將列索引傳遞到GetDateTime,就像您使用IsDbNull一樣?

if (!reader.IsDBNull(4)) 
{ 
    service.ServiceDate = reader.GetDateTime(4); 
} 

另一種可能性:Convert Zero Datetime=true

此外,閱讀上的錯誤等一些信息後,這聽起來像你可能需要添加Convert Zero Datetime=true到您的連接字符串,使0000-00-00 00:00:00值的轉換在DATETIME列(如果您有任何這些)到DateTime.MinValue

看看這裏的一些結果:http://www.bing.com/search?q=Unable+to+convert+MySQL+date%2Ftime+value+to+System.DateTime&form=IE10TR&src=IE10TR&pc=HPDTDFJS

+0

謝謝! AllowZeroDateTime設置解決了它! – haosmark 2014-12-02 14:21:08