0

因为今天是星期五,我的大脑一定有问题。

我正在尝试使用良好的 OleDb 更新 DateTime 类型的列,更新始终运行(更改同一行上的其他列值)但由于某种原因 DateTime 列拒绝设置为空

Ofc 列允许为空。

我正在使用 OleDbParameter 构造函数向我的命令添加一个新参数,如果值为 null,它可能是拒绝运行的参数吗?

我尝试使用 SqlDateTime.Null、DbNull.Value 和 null 作为参数,但没有将值设置为 null,它保持不变或将其设置为我们心爱的 1900-00-01。

任何提示和技巧表示赞赏

4

2 回答 2

4

你想使用 DBNull.Value

就像之前的评论一样,你可以做类似的事情DateTime? myDate = null;

于 2011-12-16T16:48:55.653 回答
0

问题是除非您采取特定行动,否则 DateTime 将被表示为 DateTime.MinValue。因此,如果您希望 DB 中有一个空值,则需要测试该值,如果是 MinValue,则改为发送 DBNull。

我们实际上使用一种方法来获取日期时间的值,如果日期是最小值,则为 null:

function object DateToDB(DateTime testDate) 
{
    if (testDate == DateTime.MinValue)
    {
        return DBNull.Value;
    } else 
    {
        return testDate;
    }
}

然后使用此方法分配参数值。

于 2011-12-16T17:05:20.013 回答