zoukankan      html  css  js  c++  java
  • Sql求和异常——对象不能从 DBNull 转换为其他类型

    做项目遇到一个以前没遇到的问题,就是要计算一个用户消费总额,

    关键代码如下:

    string sql = "select sum(Tmoney) from [order] where uid=@uid";
    SqlParameter[] paras ={
                              new SqlParameter("@uid",uid)
                          };
    object result = this.ExecuteScalar(sql, CommandType.Text, paras);
    if (result==null)
    {
        return 0;
    }
    else
    {
        return Convert.ToDecimal(result);
    }

    运行结果报错如下:

    解析:

    但是代码中已经对获取的值进行了判断,result==null的时候就返回0,不在将result转换为int类型,

    但是出现的错误信息是"对象不能从 DBNull 转换为其他类型",调试的时候也会发现,并没有经过result==null,

    而是直接跳过,那就说明了如果查询的结果为空的话,数据类型不是Object类型的null值,而是DBNull类型了。

    查询资料,发现要对result==DBNull.Value进行判断才可以。

    正确代码如下:

    string sql = "select sum(Tmoney) from [order] where uid=@uid";
    SqlParameter[] paras ={
                              new SqlParameter("@uid",uid)
                          };
    object result = this.ExecuteScalar(sql, CommandType.Text, paras);
    if (result==DBNull.Value)
    {
        return 0;
    }
    else
    {
        return Convert.ToDecimal(result);
    }
  • 相关阅读:
    【Django】django 处理request流程细节(转)
    【Django】request 处理流程(转)
    【Django】中间件
    【HTML】DocType
    【CSS】伪类与伪元素
    【nodejs】nodejs 的linux安装(转)
    【chrome】 chrome 开发者工具
    【samba】samba 用户权限配置(转)
    form表单组件
    自定义分页器
  • 原文地址:https://www.cnblogs.com/xyyt/p/3203430.html
Copyright © 2011-2022 走看看