【发布时间】:2015-08-31 23:00:19
【问题描述】:
既然是星期五,我的大脑肯定出了问题。
我正在尝试使用良好的 ol'OleDb 更新 DateTime 类型的列,更新始终运行(更改同一行上的其他列值)但由于某种原因 DateTime 列拒绝设置为 null。
Ofc 列允许为空。
我正在使用 OleDbParameter 构造函数向我的命令添加一个新参数,如果值为 null,它可能是拒绝运行的参数吗?
我尝试使用 SqlDateTime.Null、DbNull.Value 和 null 作为参数,但没有将值设置为 null,它保持不变或将其设置为我们心爱的 1900-00-01。
感谢任何提示和技巧
【问题讨论】:
-
列是否允许
NULLs? -
发布您的代码。 DateTime 除非你使用 DateTime? 不能是 null。 当然如果你的变量不能是 DateTime? 出于某种原因,将其设置为无效值(即 1909 ),如果将其设置为该年份,则手动将其设置为 NULL
-
你能显示实际的更新命令吗?您是否有一些保护
where子句,或者其他将与参数进行比较的东西(并且由于null=/=null而失败) -
Ramhound “如果将其设置为那一年手动将其设置为 NULL”,这正是我正在寻找的,但我该怎么做呢?数据库似乎吞噬了我的 DbNull 和我迄今为止发现的所有空值。 @Damien_The_Unbeliever 这是一个常规的“UPDATE tableX SET UserName = ? WHERE User_Id = 1” 没什么特别的,我稍后会尝试更多地使用方法,整个更新运行并完美运行,只是它不会触及我的日期时间列。无论如何感谢您的回复
-
如果我是你,无论如何我都会尝试发布代码。如果它特别聪明,您现在可能已经自己解决了。可能正是因为它是您认为“常规”的那种代码,您看不到它哪里出了问题。
标签: c# .net sql sql-server dbnull