2013-01-02 175 views
0

我正在檢查是否發生DBNull。DBNull拋出一個錯誤

C#代碼:

tbDuration.Text = (string)MyReader["TDuration"]==DBNull?"":(string)MyReader["TDuration"]; 

但我得到的DBNull的錯誤:

錯誤4 'System.DBNull' 是 '型',而是使用類似 '變量' C: \ Visual Studio

如何檢查DBNull?

問候

+1

注意,你可以只使用'tbDuration.Text = MyReader [ 「TDuration」]的ToString();'爲DBNull.Value轉換爲空字符串這條路。 –

+0

會給它一個去感謝。 – TeaDrinkingGeek

+0

現在得到一個不能隱式地將類型'object'轉換爲'string'。有一個明確的轉換(你是否缺少一個轉換?) – TeaDrinkingGeek

回答

2

DBNull是一種類型。您正在尋找的是該類型的靜態成員:DBNull.Value。事情是這樣的:

tbDuration.Text = MyReader["TDuration"] == DBNull.Value ? "" : (string)MyReader["TDuration"]; 

注:你也不想轉換爲string用於比較的目的。 DBNull.Value將適用於MyReader[]的實際結果,但如果您投了它,則不會。在驗證它不是null之後,就可以投射它。

+1

除了第一個轉換爲字符串 - 這將失敗的DBNull。 –

+0

是的,現在得到一個運算符'=='不能應用於類型'字符串'和'System.DBNull'的操作數 – TeaDrinkingGeek

+0

@HansKesting:啊,好的。現在解決答案。 – David

3

使用DBNull.Value用於檢查空值。

tbDuration.Text = 
MyReader["TDuration"]==DBNull.Value?"":(string)MyReader["TDuration"] 

或者,你可以使用:

tbDuration.Text = 
DBNull.Value.Equals(MyReader["TDuration"]) ?"":(string)MyReader["TDuration"] 
0

System.DbNull.Value,是的System.DbNull實例的有效參考。

因此,您可以檢查DBNull的靜態值屬性。

所以應該DbNull.Value不僅DbNull

(string)MyReader["TDuration"]==DBNull.Value?"":(string)MyReader["TDuration"];