gpt4 book ai didi

.net - DBNull 的意义何在?

转载 作者:行者123 更新时间:2023-12-02 15:54:56 25 4
gpt4 key购买 nike

在 .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_NULLVT_EMPTY ,但是为什么不做一个 COMEmpty类呢?这将更适合整个 .NET 框架。

我错过了什么吗?谁能解释一下为什么 DBNull被发明了,它有助于解决什么问题?

最佳答案

关键是在某些情况下,数据库值为 null 和 .NET Null 之间存在差异。

例如。如果您使用 ExecuteScalar(它返回结果集中第一行的第一列)并且您得到一个空值,这意味着执行的 SQL 没有返回任何值。如果您返回 DBNull,则表示 SQL 返回了一个值,并且该值为 NULL。您需要能够分辨出差异。

关于.net - DBNull 的意义何在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4488727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com