You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中MySql SUM查询返回null引发DBNull类型转换错误如何解决

报错原因

当你的SQL查询的WHERE条件没有匹配到任何行时,MySQL的SUM()聚合函数会返回NULL,对应.NET程序中会映射为DBNull.Value,直接将该值强制转换为数值类型就会触发Object cannot be cast from DBNull to other types报错。

解决方法

方法1:SQL层面处理(更推荐)

直接修改SQL语句,用MySQL内置的IFNULL()函数将NULL结果替换为0,无需修改后续C#逻辑:
把原来的查询SQL替换为:

SELECT IFNULL(SUM(standard_one), 0) FROM `challenge` WHERE DAYOFWEEK(date)=1 AND challenge_id = @challenge_id AND username = @username

注:你原来的SQL里WHERE (SELECT DAYOFWEEK(date)=1)是冗余写法,直接写DAYOFWEEK(date)=1即可,执行效率更高。

方法2:C#代码层面处理

执行查询后先判断返回值是否为DBNull.Value,再做类型转换:

object queryResult = command1.ExecuteScalar();
int sumValue = queryResult == DBNull.Value ? 0 : Convert.ToInt32(queryResult);
  • 如果需要取其他数值类型,把Convert.ToInt32替换为对应的转换方法即可,比如Convert.ToDecimal。

内容的提问来源于stack exchange,提问作者Mohammad Hujerat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:15:06