将参数中的 NULL 传递给存储过程中的 DateTime 字段
我有一个存储过程,它使用我提供的参数更新数据库,但我在将 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”。
有人有什么想法吗?
I have a stored procedure which updates a database using the parameters I supply but I'm having trouble passing a NULL to the stored procedure
The field I need to make NULL is a DateTime field
DB.Parameters.AddWithValue("@date", NULL)
This gives me the error
'NULL' is not declared. 'Null' constant is no longer supported; use 'System.DBNull' instead
So I tried
DB.Parameters.AddWithValue("@date", DBNull.Value.ToString())
But this produces the value 1900-01-01 00:00:00.000
in the column as it's passing a ""
to the field
I also tried
DB.Parameters.AddWithValue("@date", DBNull.Value)
But it produces this error
Value of type 'System.DBNull' cannot be converted to 'String'.
Has anybody got any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
或者,您可以像这样添加参数,如果您的变量为 null,则它会在数据库中为其提供一个 null 值:
您需要将其设置为可空类型,如 Amit 提到的那样。
更多详细信息和背景请访问 http://evonet.com.au/overview-of-c-nullable -类型/
Or you can add your parameter like this, which gives it a null value in the database if your variable is null:
you need to set it as a nullable type as Amit mentioned.
More details and background available at http://evonet.com.au/overview-of-c-nullable-types/
尝试类似的操作,使用
Add
而不是AddWithValue :
Try something like this, using
Add
rather thanAddWithValue
:试试这个
如果您使用类及其属性并且这些属性值用作参数,那么您可以将
属性的签名更改为
此外,如果您的日期列是 varchar 类型,则将其更正为 Date (Sql2008) / DateTime( 2005)。
//将参数更改为此
允许字段接受null,然后将值传递为
Try this
If you are using class and its property and those property values are used as parameter then you can do this
chnage the signature of the property to
Also if your date column is of type varchar then correct it to Date (Sql2008) / DateTime(2005).
//change parameter to this
Allow the field to accept null and then pass the value as
这是一个例子。这对我来说是工作
This is an example. It's work for me