[英]Store DBnull in database for date column that accepts null
我有一个DateTime
值,我想保存到数据库。 该列允许数据库中为null。 当我尝试运行下面的代码时,我收到此错误消息。
无法确定条件表达式的类型,因为system.dbnull和system.datetime之间没有隐式转换
如何为日期列存储空值或空值?
public class ExcelData
{
public DateTime? DateValue1 { get; set; }
}
DateValue1 = col28Value == null ? DBNull.Value : Convert.ToDateTime(col28Value)
它告诉你,你不能声明Nullable<DateTime>
并为它赋予一个与null
的DBNull.Value
您的代码应该只是:
DateValue1 = col28Value ==null? (DateTime?)null: Convert.ToDateTime(col28Value)
条件运算符要求其中一种类型可以转换为另一种类型。
它不会尝试找到最接近的公共基类型。
由于DBNull
和DateTime
没有任何共同之处,因此失败了。
你需要将任何一方投射到object
。
但是,这也行不通。
DBNull.Value
是一个特殊对象,用于System.Data
某些API。
它与可空类型无关。
相反,您需要使用null
本身。
由于null
不能转换为DateTime
,您还需要将其转换为DateTime?
。 或者,您可以编写new DateTime?()
,它将创建一个空(null) Nullable<DateTime>
值。
使用SqlParameter
而不是它们的值如此...
SqlParameter sp = col28Value == null ? new SqlParameter("@whatever", DBNull.Value) : new SqlParameter("@whatever", col28Value);
当你这样做:
DateValue1 = col28Value == null ? DBNull.Value : Convert.ToDateTime(col28Value)
你可能在做:
DateValue1 = DbNull.Value;
这是不可能的。 所以用null替换DbNull.Value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.