如何在我们的程序中为allow-null datetime字段(DB)处理null?

时间:2009-08-29 08:58:40

标签: c# datetime null

我们如何在c#的程序中为datetime字段(从SQL Server获取)处理null?

2 个答案:

答案 0 :(得分:12)

这里有3种常见的方法;

  • 如果您正在谈论object(可能是从数据读取器中获取它),那么DBNull.Value可以表示null。我不倾向于将其从数据层中删除,尽管
  • 由于.NET 1.1历史记录,DateTime.MinValue通常被解释为null;一个神奇的数字,也许 - 但它起作用并得到大多数数据绑定等的支持
  • 在.NET 2.0中,Nullable<T>表示您可以使用DateTime? - 即可以为空的DateTime;只需使用DateTime? - 您的意思是DateTime可以为null,并且您可以为其指定null或有效DateTime的值。

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

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

命令填充(以Nullable<T>为例):

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

答案 1 :(得分:3)

使用DateTime?

你有什么问题,特别是?

- 编辑

很明显,这是一个Nullable DateTime对象,而不是一个问题:)

DateTime? t = null;

- 编辑

回应评论,请查看:

DateTime? theTime;

if( table["TheColumn"] == DBNull.Value ){
    theTime = null;
} else {
    theTime = (DateTime) table["TheColumn"];
}