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

3

在修改SQL Server数据库中的数据时,您可以使用System.DBNull.Valuenull来表示NULL值。这两种方法都可以工作,并将正确的值设置为NULL

我的问题是 - 哪个更好,并为什么?是否有某些情况应该使用其中之一代替另一个?

2个回答

2

System.DBNull.Value != null开始,通过测试此代码:

var result = (System.DBNull.Value == null); // this is always false

我们可以看到,CLR对它们的处理方式并不相同。在从数据库中检索数据时,我们需要检查DBNull.Value而不是null引用。

虽然在INSERTUPDATE数据时使用哪一个都没有关系,但我倾向于在数据访问代码中始终使用DBNull.Value来保持一致性。

在问题C# Database Access: DBNull vs null中有各种其他观点。

哪个更好,为什么?(在插入模式下)?你的第一部分与问题无关 :) - 我已经在问题本身中回答了。 - Royi Namir
1
这段内容很重要,因为它确立了我的立场。既然在阅读时它很有影响力,所以你应该保持一致,在插入或更新时使用它。 - Yuck
我听说RDBMS类型有依赖关系,是吗? - Royi Namir
您的问题已标记为SQL Server,它们被视为相同。我无法对其他RDBMS连接器进行评论。我注意到相关问题中的一个答案似乎表明Oracle需要使用DBNull - Yuck

0

DBNull代表一种变体,不是特定类型。在一般情况下,我期望在任何需要强类型数据集的结构中,如果需要将DBNull转换为“类型化的NULL”,则会有性能损失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接