首页 > 后端开发 > C++ > 在 C# 中分配给 SQL 参数时如何处理 DBNull 值?

在 C# 中分配给 SQL 参数时如何处理 DBNull 值?

Mary-Kate Olsen
发布: 2025-01-11 08:48:45
原创
966 人浏览过

How to Handle DBNull Values When Assigning to SQL Parameters in C#?

无法将 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 类型值,两者不兼容。

解决方案:

解决此问题,您可以选择以下几种方法:

  • 强制类型转换: 将 AgeIndex 实例强制转换为 object 类型,这可以满足 ?: 运算符的要求:
<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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板