Sql server 使用DBNull或null插入/更新数据?

Sql server 使用DBNull或null插入/更新数据?,sql-server,null,Sql Server,Null,修改SQL Server数据库中的数据时,可以使用System.DBNull.Value或null来表示null值。这两个选项都将起作用,并将正确的值设置为NULL 我的问题是-哪一个是首选的,为什么?在某些情况下,是否应该使用一个来代替另一个?通过测试此代码: var result = (System.DBNull.Value == null); // this is always false 我们可以看到CLR对它们的处理方式不同。从数据库检索数据时,我们需要检查DBNull.Value而

修改SQL Server数据库中的数据时,可以使用
System.DBNull.Value
null
来表示
null
值。这两个选项都将起作用,并将正确的值设置为
NULL

我的问题是-哪一个是首选的,为什么?在某些情况下,是否应该使用一个来代替另一个?

通过测试此代码:

var result = (System.DBNull.Value == null); // this is always false
我们可以看到CLR对它们的处理方式不同。从数据库检索数据时,我们需要检查
DBNull.Value
而不是
null
引用

虽然我们使用
插入
更新
数据并不重要,但我倾向于使用
DBNull.Value
通过数据访问代码保持一致性


在这个问题上还有许多其他的观点

DBNull是一个变体的代表,并且不是特定类型的。在一般情况下,如果您有一个需要强类型数据集且必须将DBNull转换为“类型化NULL”的构造,我会期望性能会受到影响。

您的第一部分与问题无关:)-我已经在问题本身中回答了我自己的问题。`不过,哪一个是首选的,为什么?`(在插入模式下。)?这是相关的,因为它设置了我的位置,这是因为阅读时很重要,所以在插入或更新时应该保持一致并使用它。我听说RDBMS类型存在依赖性。否?您的问题被标记为SQL Server,在SQL Server中,它们被同等对待。我无法与其他RDBMS连接器通话。我注意到相关问题的一个答案似乎表明Oracle需要使用
DBNull