【发布时间】:2009-08-29 08:58:39
【问题描述】:
我们如何在 c# 程序中处理日期时间字段(从 SQL Server 获取)的 null?
【问题讨论】:
我们如何在 c# 程序中处理日期时间字段(从 SQL Server 获取)的 null?
【问题讨论】:
这里有3种常用的方法;
object(可能是从数据读取器获取它),那么DBNull.Value 可以表示空值。不过,我不倾向于将其排除在数据层之外DateTime.MinValue 通常被解释为null;也许是一个神奇的数字 - 但它可以工作并且受到大多数数据绑定等的支持Nullable<T> 表示您可以使用 DateTime? - 即可以为空的 DateTime;只需使用DateTime?,无论您的意思是可以为空的DateTime,您都可以给它一个值null 或一个有效的DateTime。关于数据访问和空值的一些其他想法:
SqlCommand 时,您必须使用DBNull.Value,而不是null - 见下文reader.IsDbNull(ordinal)
命令的东西(以Nullable<T>为例):
param.Value = when.HasValue ? (object)when.Value : DBNull.Value;
【讨论】:
使用DateTime?
具体来说,你遇到了什么问题?
-- 编辑
很清楚,这是一个Nullable DateTime 对象,不是问题:)
DateTime? t = null;
-- 编辑
回复评论,检查如下:
DateTime? theTime;
if( table["TheColumn"] == DBNull.Value ){
theTime = null;
} else {
theTime = (DateTime) table["TheColumn"];
}
【讨论】:
DBNull.Value。