无法将 DBNull 值赋给 SqlParameter
尝试将空值赋给 SqlParameter 时,以下代码会报错:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (AgeItem.AgeIndex == null) ? DBNull.Value : AgeItem.AgeIndex; parameters[0] = planIndexParameter;</code>
问题在于 ?: 运算符无法确定返回类型,因为它可能是 int 类型值,也可能是 DBNull 类型值,两者不兼容。
解决方案:
解决此问题,您可以选择以下几种方法:
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value; parameters[0] = planIndexParameter; </code>
<code class="language-csharp">SqlParameter[] parameters = new SqlParameter[1]; SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int); planIndexParameter.Value = AgeItem.AgeIndex ?? DBNull.Value; parameters[0] = planIndexParameter; </code>
根据 MSDN 文档对 ?: 运算符的说明,first_expression 和 second_expression 的类型必须相同,或者其中一个类型可以隐式转换为另一个类型。
以上是在 C# 中分配给 SQL 参数时如何处理 DBNull 值?的详细内容。更多信息请关注PHP中文网其他相关文章!