我们如何在 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/