我们如何在c#的程序中为datetime字段(从SQL Server获取)处理null?
答案 0 :(得分:12)
这里有3种常见的方法;
object
(可能是从数据读取器中获取它),那么DBNull.Value
可以表示null。我不倾向于将其从数据层中删除,尽管DateTime.MinValue
通常被解释为null
;一个神奇的数字,也许 - 但它起作用并得到大多数数据绑定等的支持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"];
}