- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 .NET 中有 null
引用,到处都用来表示一个对象引用为空,然后还有DBNull
,它被数据库驱动程序(和其他几个)用来表示......几乎相同的东西。自然,这会造成很多困惑,并且必须制定转换例程等。
那么,为什么最初的 .NET 作者决定这样做呢?对我来说这毫无意义。他们的文档也没有任何意义:
The DBNull class represents a nonexistent value. In a database, for example, a column in a row of a table might not contain any data whatsoever. That is, the column is considered to not exist at all instead of merely not having a value. A DBNull object represents the nonexistent column. Additionally, COM interop uses the DBNull class to distinguish between a VT_NULL variant, which indicates a nonexistent value, and a VT_EMPTY variant, which indicates an unspecified value.
DBNull
!我可以理解需要区分
VT_NULL
和
VT_EMPTY
,但是为什么不做一个
COMEmpty
类呢?这将更适合整个 .NET 框架。
DBNull
被发明了,它有助于解决什么问题?
最佳答案
关键是在某些情况下,数据库值为 null 和 .NET Null 之间存在差异。
例如。如果您使用 ExecuteScalar(它返回结果集中第一行的第一列)并且您得到一个空值,这意味着执行的 SQL 没有返回任何值。如果您返回 DBNull,则表示 SQL 返回了一个值,并且该值为 NULL。您需要能够分辨出差异。
关于.net - DBNull 的意义何在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4488727/
我是一名优秀的程序员,十分优秀!