c# - 如何在我们的程序中处理允许为空的日期时间字段 (DB​​) 的空值?

标签 c# datetime null

我们如何在 c# 程序中处理日期时间字段(从 SQL Server 获取)的空值?

最佳答案

这里有3种常见的方法;

  • 如果你说的是object (也许当你从数据阅读器中获取它时),然后是 DBNull.Value可以表示空。不过,我不倾向于将其排除在数据层之外
  • 由于 .NET 1.1 的历史,DateTime.MinValue通常被解释为 null ;一个神奇的数字,也许 - 但它有效并且被大多数数据绑定(bind)等支持
  • 在 .NET 2.0 中,Nullable<T>意味着你可以使用 DateTime? - 即可空的日期时间;只需使用 DateTime?无论你在哪里,你的意思是DateTime可以为空,你可以给它一个值 null或有效的 DateTime .

关于数据访问和 null 的一些其他想法:

  • 传递给 SqlCommand 时你必须使用DBNull.Value , 不是 null - 见下文
  • 从数据阅读器读取时,我倾向于检查 reader.IsDbNull(ordinal)

命令内容(以 Nullable<T> 为例):

param.Value = when.HasValue ? (object)when.Value : DBNull.Value;

关于c# - 如何在我们的程序中处理允许为空的日期时间字段 (DB​​) 的空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1350896/

相关文章:

c# - 通过 NSubstitute 中的回调验证调用参数

java - 如何使用 Unity3D 将变量从 AndroidJavaObject 获取到 C# 类中

c# - 没有集合的 TreeView 递归

datetime - 在ElasticSearch中的不同文档中减去两个日期

c# - 为什么我的 WinForms 控件会闪烁并缓慢调整大小?

java - 如何使用 JodaTime 保留原始时区

c# - 找出调用 DateTime.ToString( ) 时获得的 DateTimeFormat

objective-c - NSDateFormatter stringFromDate 一直返回 nil

c# - .Net如何允许将Nullables设置为Null

android - 在导航 Activity 时恢复 edittext 值