使用空日期时,通用化命令参数创建

时间:2009-08-19 16:00:06

标签: c# database ado.net

我正在尝试将以下代码行进行泛化(如果这甚至是一个词):

oCmd.CreateParameter("@Date", SqlDbType.DateTime, updateDate > DateTime.MinValue ? updateDate : SqlDateTime.Null);

第一个变化显然是SqlDbType.DateTime到DbType.DateTime,我该怎么处理SqlDateTime.Null?

如果我改为:

oCmd.CreateParameter("@Date", DbType.DateTime, updateDate > DateTime.MinValue ? updateDate : null);

我得到漂亮的小红色波浪形告诉我DateTime和null之间没有隐式转换。我似乎无法找到这样做的通用方法 - 这可能吗?

由于updateDate参数的源与这行代码之间不兼容,我不能只使用updateDate:

oCmd.CreateParameter("@Date", DbType.DateTime, updateDate);

通常,我们从调用代码收到的日期超出了SQL Server的有效日期范围,导致命令失败。因此必须进行检查 - 因此包含三元检查的原因。

我能看到的唯一方法就是突破多行,但我希望有人能够耍到他们的袖子,所以我可以把它保持为一条线。

提前干杯

1 个答案:

答案 0 :(得分:3)

试试这个:

oCmd.CreateParameter("@Date", DbType.DateTime,
    updateDate > DateTime.MinValue ? (object)updateDate : DBNull.Value);
相关问题