首页 > 解决方案 > 将 DBNull 传递给 SqlParameter 时出错

问题描述

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

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

但我得到一个错误

无法将类型“字符串”隐式转换为“布尔”

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

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

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

标签: c#sql-server-2008-r2.net-4.0

解决方案


vName是一个字符串,但你使用它就像它是一个bool: vName ? ...。使用vName == null ? ...

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

推荐阅读