我正在檢查是否發生DBNull。DBNull拋出一個錯誤
C#代碼:
tbDuration.Text = (string)MyReader["TDuration"]==DBNull?"":(string)MyReader["TDuration"];
但我得到的DBNull的錯誤:
錯誤4 'System.DBNull' 是 '型',而是使用類似 '變量' C: \ Visual Studio
如何檢查DBNull?
問候
茶
我正在檢查是否發生DBNull。DBNull拋出一個錯誤
C#代碼:
tbDuration.Text = (string)MyReader["TDuration"]==DBNull?"":(string)MyReader["TDuration"];
但我得到的DBNull的錯誤:
錯誤4 'System.DBNull' 是 '型',而是使用類似 '變量' C: \ Visual Studio
如何檢查DBNull?
問候
茶
DBNull
是一種類型。您正在尋找的是該類型的靜態成員:DBNull.Value
。事情是這樣的:
tbDuration.Text = MyReader["TDuration"] == DBNull.Value ? "" : (string)MyReader["TDuration"];
注:你也不想轉換爲string
用於比較的目的。 DBNull.Value
將適用於MyReader[]
的實際結果,但如果您投了它,則不會。在驗證它不是null之後,就可以投射它。
除了第一個轉換爲字符串 - 這將失敗的DBNull。 –
是的,現在得到一個運算符'=='不能應用於類型'字符串'和'System.DBNull'的操作數 – TeaDrinkingGeek
@HansKesting:啊,好的。現在解決答案。 – David
你應該檢查DBNull.Value
,不DBNull
直接。
使用DBNull.Value用於檢查空值。
tbDuration.Text =
MyReader["TDuration"]==DBNull.Value?"":(string)MyReader["TDuration"]
或者,你可以使用:
tbDuration.Text =
DBNull.Value.Equals(MyReader["TDuration"]) ?"":(string)MyReader["TDuration"]
System.DbNull.Value
,是的System.DbNull
實例的有效參考。
因此,您可以檢查DBNull
的靜態值屬性。
所以應該DbNull.Value
不僅DbNull
(string)MyReader["TDuration"]==DBNull.Value?"":(string)MyReader["TDuration"];
注意,你可以只使用'tbDuration.Text = MyReader [ 「TDuration」]的ToString();'爲DBNull.Value轉換爲空字符串這條路。 –
會給它一個去感謝。 – TeaDrinkingGeek
現在得到一個不能隱式地將類型'object'轉換爲'string'。有一個明確的轉換(你是否缺少一個轉換?) – TeaDrinkingGeek