如何在我们的程序中处理允许为空的日期时间字段 (DB) 的 null?
我们如何在 C# 程序中处理日期时间字段(从 SQL Server 获取)的 null 值?
How could we handle null for a datetime field (got from SQL Server) in our program in c#?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里有 3 种常见的方法;
object
(也许当您从数据读取器中获取它时),那么DBNull.Value
可以表示 null。我不倾向于将其排除在数据层之外,尽管DateTime.MinValue
通常被解释为null
;也许是一个神奇的数字 - 但它可以工作,并且受到 .NET 2.0 中大多数数据绑定等的支持Nullable
意味着您可以使用DateTime?
- 即可空的日期时间;只需使用DateTime?
即可,只要您指的是可以为 null 的DateTime
,并且您可以为其指定值null
或有效的 <代码>日期时间。关于数据访问和 null 的其他一些想法:
SqlCommand
时,您必须使用DBNull.Value
,而不是null - 请参阅下文,
reader.IsDbNull(ordinal)
命令内容(以
Nullable
为例):There are 3 common approaches here;
object
(perhaps as you fetch it from a data-reader), thenDBNull.Value
can represent null. I don't tend to let this out of the data-layer, thoughDateTime.MinValue
is commonly interpreted asnull
; a magic number, maybe - but it works and is supported by most data-binding etcNullable<T>
means you can useDateTime?
- i.e. a nullable-of-DateTime; just useDateTime?
where-ever you mean aDateTime
that can be null, and you can give it a value ofnull
or a validDateTime
.Some other thoughts on data-access and nulls:
SqlCommand
you must useDBNull.Value
, notnull
- see belowreader.IsDbNull(ordinal)
command stuff (with
Nullable<T>
as the example):使用
DateTime?
您具体遇到了什么问题?
-- 编辑
清楚一点,这是一个
Nullable
DateTime 对象,而不是问题:)-- 编辑
响应评论,检查如下:
Use
DateTime?
What problem are you having, specifically?
-- Edit
Just so it's clear, that's a
Nullable
DateTime object, not a question :)-- Edit
Responding to comment, check it like so: