我正在检查是否发生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