6

我有一个 C# 问题。我只是想向社区询问System.DBNull与 DataReader 的结合使用。

在查询数据库并检查空值时,哪个更合适/首选?

使用“”运算符:

reader["fieldname"] is DBNull

或者只是检查值:

reader["fieldname"] == DBNull.Value

两者似乎都有效。我只是想得到一些其他的意见。

4

3 回答 3

7

鉴于这DBNull.Value是该类的唯一非空值DBNull,两者实际上是等效的。你觉得哪个更具可读性?我个人非常喜欢第一个版本,但你的里程可能会有所不同。

无论哪种方式,在性能方面都不太可能成为问题。

于 2012-06-19T15:10:48.383 回答
4

您也可以通过这种方式进行检查:

Convert.IsDBNull(reader["field name"]);
于 2012-06-19T15:11:03.390 回答
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 方法。

于 2012-06-19T15:16:58.327 回答