c# - 使用空日期时通用化命令参数创建

标签 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 的有效日期范围,这会导致命令失败。因此必须进行检查 - 因此包含三元检查的原因。

我能看到的唯一方法是分成多行,但我希望有人能偷偷摸摸,这样我就可以将它保持为一行。

提前干杯

最佳答案

试试这个:

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

关于c# - 使用空日期时通用化命令参数创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1300948/

相关文章:

c# - 如何使用C#创建视频缩略图

c# - "Unable to read data from the transport connection: net_io_connectionclosed."- Windows Vista 商业版和 SMTP

java - java应用程序中如何存储数据?

mysql - mysql中的子查询定界符

c++ - 如何与 SQL Server 2008 建立稳定连接并使用 C++ 编写我的第一个 CRUD 操作

c# - 使用多线程的 SQL Server 数据库更新

ado.net - 无法为 DataTable 编写 XML,因为 Windows 搜索返回 Authors 属性的字符串数组

c# - 循环触发一次通知

c# - 支持和反对从 SQL Server 迁移到 MongoDB 的原因

php - 如何使用 <select> 标签中的值更新我的数据库中的值 - (不是 $_POST)