首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbNull.Value和DbNull.Value.ToString()之间的区别

DbNull.Value和DbNull.Value.ToString()之间的区别
EN

Stack Overflow用户
提问于 2013-11-20 17:32:23
回答 3查看 12.2K关注 0票数 1

我想知道哪种用法是正确的?

代码语言:javascript
复制
if(!string.IsNullOrEmpty(parentID))
   cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));
else
   cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));

代码语言:javascript
复制
if(!string.IsNullOrEmpty(parentID))
   cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));
else
   cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-20 17:38:51

代码语言:javascript
复制
cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));

这是将parentID传递给参数@ParentSesID。

代码语言:javascript
复制
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));

正在将null值传递给参数。

代码语言:javascript
复制
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));

传递的值等于string.Empty,这在数值数据类型中是不允许的。

代码语言:javascript
复制
cmd.Parameters.Add(new SqlParameter("@ParentSesID", null);

与忽略参数相同。

因此,当您需要将null传递给SP时,您必须传递DBNull.Value

票数 6
EN

Stack Overflow用户

发布于 2013-11-20 17:33:06

这一条:如果你要写入的字段可以接受数据库中的NULL值,那么cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));是正确的。

如果字段是VARCHAR,并且不接受NULL,但是您希望以某种方式指示该字段中没有值,因此在应用程序中写入特定于应用程序的“无值”值,则为cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));。因此,您的应用程序知道,如果它在字段中找到该值,这意味着:没有值。

票数 2
EN

Stack Overflow用户

发布于 2013-11-20 17:33:58

DBNull.Value.ToString()将返回空字符串,所以我认为

代码语言:javascript
复制
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));

是一种很好的方法,这里唯一的方法

请看这里:

http://ideone.com/iGo1Jh

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20092060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档