C# 将DBNull传递给SqlParameter时出错

C# 将DBNull传递给SqlParameter时出错,c#,sql-server-2008-r2,.net-4.0,C#,Sql Server 2008 R2,.net 4.0,如果变量vName的值为null,我试图将null值传递给SqlParameter,否则传递vName值,如下所示 cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value = vName ? null : DBNull.Value; 但我犯了个错误 无法将类型“string”隐式转换为“bool” 我搜索并发现我必须使用AgeItem.AgeIndex,但我得到的错误是 当前上下文中不存在名称“AgeItem

如果变量
vName
的值为null,我试图将null值传递给
SqlParameter
,否则传递
vName
值,如下所示

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value = vName ? null : DBNull.Value;
但我犯了个错误

无法将类型“string”隐式转换为“bool”

我搜索并发现我必须使用
AgeItem.AgeIndex
,但我得到的错误是

当前上下文中不存在名称“AgeItem”


vName
是一个字符串,但您使用它就像使用
bool
vName。使用
vName==null

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value =
     vName == null ? DBNull.Value : (Object)vName;

vName
是一个字符串,但您使用它就像使用
bool
vName。使用
vName==null

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value =
     vName == null ? DBNull.Value : (Object)vName;

代码应按如下所示进行更改

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value!= null ? vName: DBNull.Value;

代码应按如下所示进行更改

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value!= null ? vName: DBNull.Value;
我觉得更干净:

if (vName != null)
    cmd.Parameters.AddWithValue("@NAME",vName);
else
    cmd.Parameters.AddWithValue("@Name",null);
我觉得更干净:

if (vName != null)
    cmd.Parameters.AddWithValue("@NAME",vName);
else
    cmd.Parameters.AddWithValue("@Name",null);

md.Parameters.Add(新的SqlParameter(“@NAME”,SqlDbType.VarChar)).Value=vName?vName:DBNull.Value;是拼写错误吗?你没有通过vname@Naruto我没有得到itmd.Parameters.Add(新的SqlParameter(“@NAME”,SqlDbType.VarChar))。Value=vName?vName:DBNull.Value;是拼写错误吗?你没有通过vname@Naruto我没有得到iterror->无法确定条件表达式的类型,因为'string'和'System.DBNull'之间没有隐式转换错误->无法确定条件表达式的类型,因为'string'和'System.DBNull'PS之间没有隐式转换。如果命令是存储的过程,并且可以接受空值,则不需要else和后续行。PS。如果该命令是存储过程,并且可以接受空值,则不需要else和后续行。