我有一个C#问题。 我只想向社群询问System.DBNull与使用DataReader的结合使用情况。
查询数据库并检查空值时,哪个更合适/更喜欢?
使用“is”运算符:
reader["fieldname"] is DBNull
或只是检查值:
reader["fieldname"] == DBNull.Value
两者似乎都有效。我只是想得到一些其他意见。
答案 0 :(得分:7)
鉴于DBNull.Value
是DBNull
类的唯一非空值,两者实际上是等价的。你觉得哪个更具可读性?我个人非常喜欢第一个版本,但你的里程可能会有所不同。
无论如何,它在性能方面都不太可能成为问题。
答案 1 :(得分:4)
您也可以这样检查:
Convert.IsDBNull(reader["field name"]);
答案 2 :(得分:2)
我认为Microsoft通常建议使用Convert.IsDBNull,因为他们倾向于要求使用Convert进行大多数转换和等效性检查。
来自http://msdn.microsoft.com/en-us/library/system.dbnull.aspx:
通过将该字段的值传递给DBNull.Value.Equals方法,可以确定从数据库字段检索的值是否为DBNull值。但是,某些语言和数据库对象提供的方法可以更容易地确定数据库字段的值是否为DBNull.Value。这些包括Visual Basic IsDBNull函数,Convert.IsDBNull方法,DataTableReader.IsDBNull方法和IDataRecord.IsDBNull方法。