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

关键代码如下:

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 ;
}
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 ;
}
else
{
return Convert.ToDecimal(result);
}

Sql求和异常——对象不能从 DBNull 转换为其他类型的更多相关文章

  1. 对象不能从 DBNull 转换为其他类型

    SQL语句:select sum (datediff(second,Begin_Time,End_Time)) as 总时长 from 数据表这是我开始的程序:int 总时长=0;总时长 =Conve ...

  2. C# 对象不能从 DBNull 转换为其他类型。

    原因是被查询的数据库表的查询项有空(什么都没填),补填0后OK.

  3. 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。

    无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Wor ...

  4. Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换

    Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换 { "@type":"java.lang.Runti ...

  5. (转)无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-

    HRESULT:0x80030002 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft ...

  6. C#与excel互操作的错误无法将类型为“Excel.ApplicationClass”的COM 对象强制转换为接口类型“Excel._Application”

    如果您使用的电脑要操作的是office2003而之前使用过office2007使用此方法可解决您的问题 无法将类型为“Microsoft.Office.Interop.Excel.Applicatio ...

  7. 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类

    错误描述 e = {"无法将类型为"System.__ComObject"的 COM 对象强制转换为接口类型"OpcRcw.Da.IOPCServer" ...

  8. System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。

    报错:System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接 ...

  9. 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”

    报错内容如下: 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM对象强制转换为接口类型“Microsoft.Office.Inte ...

随机推荐

  1. chronyd时间服务器同步时间配置

    chrony是两个用来维持计算机系统时钟准确性的程序,这两个程序命名为chronyd和chronyc. chronyd是一个在系统后台运行的守护进程.他根据网络上其他时间服务器时间来测量本机时间的偏移 ...

  2. js实现手机号身份证等加星(*)号

    下面来为各位整理了一些关于js实现手机号身份证等加星(*)号代码了,在js不足时我们还补充了php实现手机号身份证等加星(*)号的函数,有兴趣的一起来看看.   有时候为了不让用户的手机号码和身份证号 ...

  3. VMware中,该如何理解桥接网络与NAT 网络模式

    原创 2016年11月16日 23:26:34,原文地址如下: http://blog.csdn.net/u010801439/article/details/53193113 首先,我在VMware ...

  4. C# 中 PadLeft和PadRight 的用法

    C# 中 PadLeft和PadRight 的用法 在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位. PadLeft(int totalWidth, char pa ...

  5. 本地管理表空间和字典管理表空间的特点,ASSM有什么特点

    字典管理表空间(Dictionary-Managed Tablespace简称DMT),8i以前包括以后都还可以使用的一种表空间管理模式,通过数据字典管理表空间的空间使用. Oracle使用两个字典来 ...

  6. filter vs servlet

    主要从如下四个方面介绍他们之间的区别:                 1.概念.                 2.生命周期.                 3.职责. 4.执行过程. 一.概念 ...

  7. docker 配置pull源

    登录阿里云 找到镜像服务 在/etc/docker下创建daemon.json文件并写入 最后重启docker服务 sudo service docekr restart

  8. Gson进行json字符串和对象之间的转化

    Gson可以实现对象与json字符串之间的转化,以下是在Android中的示例代码. Gson主页:https://code.google.com/p/google-gson/ public clas ...

  9. Tornado 中 PyMongo Motor MongoEngine 的性能测试

    最近在使用 Tornado 开发 API,数据库选择了 MongoDB,因为想使用 Geo 搜索的特性.Python 可供选择的 MongoDB Drivers 可以在官网查找. 在这些 Driver ...

  10. centos7修改ssh默认登陆端口号

    参考网站; https://blog.csdn.net/ausboyue/article/details/53691953 第一步:修改SSH配置文件(注意是sshd_config而不是ssh_con ...