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);
    }
  • 相关阅读:
    手机号不能为空
    选项卡套选项卡
    可以在一个html的文件当中读取另一个html文件的内容
    价格计算
    v形 加强版
    V形
    生成100个Div
    伪元素::after和::before
    数组中的toString,toLocalString,valueOf方法有什么区别
    JavaScript toLocaleString() 方法
  • 原文地址:https://www.cnblogs.com/xyyt/p/3203430.html
Copyright © 2011-2022 走看看