【问题标题】:INSERT / UPDATE data using DBNull or null?使用 DBNull 或 null 插入/更新数据?
【发布时间】:2011-10-27 15:00:00
【问题描述】:

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

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

【问题讨论】:

    标签: sql-server null


    【解决方案1】:

    来自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还有各种其他意见

    【讨论】:

    • 你的第一部分与问题无关:) - 我已经在问题本身中确认了我的自我。`仍然,其中哪一个是首选,为什么? `(在插入模式下)?
    • 它的相关性在于它确立了我的立场,即因为阅读时很重要你应该保持一致并在插入或更新时使用它 .
    • 听说RDBMS类型有依赖..no ?
    • 您的问题已被标记为 SQL Server,它们的处理方式相同。我无法与其他 RDBMS 连接器交谈。我确实注意到相关问题的答案之一似乎表明 Oracle 需要使用 DBNull
    【解决方案2】:

    DBNull 代表一个变体,不是特定于类型的。在一般情况下,我希望任何你有一个需要强类型数据集并且必须将 DBNull 转换为“typed-NULL”的构造的地方的性能都会受到影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-11
      • 2012-05-30
      • 1970-01-01
      • 2019-01-31
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      相关资源
      最近更新 更多