我正在尝试通用化(如果这甚至是一个词的话)以下代码行:
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/