将 DBNull 传递给 SqlParameter 时出错

Error while passing DBNull to SqlParameter

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

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

但我得到一个错误

Cannot implicitly convert type 'string' to 'bool'

我搜索并发现我必须使用 AgeItem.AgeIndex 但我收到错误

The name 'AgeItem' does not exist in the current context

cmd.Parameters.Add(new SqlParameter("@NAME", SqlDbType.VarChar)).Value =(object)AgeItem.AgeIndex ?? DBNull.Value;

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;

恕我直言,干净多了:

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