【发布时间】:2011-07-08 02:39:31
【问题描述】:
我有一个存储过程,它使用我提供的参数更新数据库,但我无法将 NULL 传递给存储过程
我需要设为 NULL 的字段是 DateTime 字段
DB.Parameters.AddWithValue("@date", NULL)
这给了我错误
'NULL' 未声明。不再支持“Null”常量;改用“System.DBNull”
所以我尝试了
DB.Parameters.AddWithValue("@date", DBNull.Value.ToString())
但这会在列中产生值1900-01-01 00:00:00.000,因为它将"" 传递给字段
我也试过了
DB.Parameters.AddWithValue("@date", DBNull.Value)
但它会产生这个错误
“System.DBNull”类型的值无法转换为“String”。
有人有什么想法吗?
【问题讨论】:
-
完全省略参数会怎样?
-
@Mick,那也不行。我想看看他的 sp 期待什么参数
-
谨慎使用
.AddWithValue调用-如果您传入DBNull.Value,.NET 在这种情况下如何知道您的参数应该是什么type?请参阅 LukeH 的回答 - 具体,您将为自己省去很多悲伤! (而且真的很难找到错误!)
标签: asp.net sql vb.net parameters null