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 ;
}
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 转换为其他类型的更多相关文章
- 对象不能从 DBNull 转换为其他类型
SQL语句:select sum (datediff(second,Begin_Time,End_Time)) as 总时长 from 数据表这是我开始的程序:int 总时长=0;总时长 =Conve ...
- C# 对象不能从 DBNull 转换为其他类型。
原因是被查询的数据库表的查询项有空(什么都没填),补填0后OK.
- 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。
无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Wor ...
- Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换
Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换 { "@type":"java.lang.Runti ...
- (转)无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。此操作失败的原因是对 IID 为“{00020970-
HRESULT:0x80030002 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft ...
- C#与excel互操作的错误无法将类型为“Excel.ApplicationClass”的COM 对象强制转换为接口类型“Excel._Application”
如果您使用的电脑要操作的是office2003而之前使用过office2007使用此方法可解决您的问题 无法将类型为“Microsoft.Office.Interop.Excel.Applicatio ...
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类
错误描述 e = {"无法将类型为"System.__ComObject"的 COM 对象强制转换为接口类型"OpcRcw.Da.IOPCServer" ...
- System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。
报错:System.InvalidCastException: 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接 ...
- 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”
报错内容如下: 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM对象强制转换为接口类型“Microsoft.Office.Inte ...
随机推荐
- ASP.NET Web Pages:表单
ylbtech-.Net-ASP.NET Web Pages:表单 1.返回顶部 1. ASP.NET Web Pages - HTML 表单 表单是 HTML 文档中放置输入控件(文本框.复选框.单 ...
- linux中convert用法
转: 强大的convert命令 convert命令可以用来转换图像的格式,支持JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等类型,下面举几个例子: convert ...
- 小朋友学C语言(8)
求圆周率 (一)圆周率简介 圆周率(Pi)是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数.π也等于圆形之面积与半径平方之比.是精确计算圆周长.圆面积.球体积等几 ...
- MySQL数据库Innodb储存引擎----储存页的结构
上一篇博客回顾: 1:数据库拥有众多的储存引擎,现在主要使用的是Inoodb,这个储存引擎有Compact,Redundant,Dynamic,Compressed四种行格式 2:Compact行格式 ...
- jmeter建立JDBC连接池时遇到“A Test is currently running,stop or shutdown test to execute this command”
1.显示如下图,打开日志可以看到:Variable Name must not be empty for element:JDBC Connection Configuration,即JDBC Con ...
- tomcat原理分析与简单实现
tomcat原理分析与简单实现 https://blog.csdn.net/u014795347/article/details/52328221 2016年08月26日 14:48:18 卫卫羊习习 ...
- smfony设置量表之间的关系
设置量表之间的关系 验证是否ok 查看我们定义是否有问题 数据库操作 http://www.2cto.com/database/201504/387197.html 设置时间段数据库自动插入时间 不 ...
- clip-path的任意元素的碎片拼接动效
看了张大神的这篇文章后自己写的,兼容性不好clip-path要加-webkit- css #test img{position: absolute;} .active .clip{ will-chan ...
- ESCP打印机数据解密
通过串口调试工具 抓取到的16进制文本; 如下 然后打开我们的文档,查看命令数据内容. 详情请密我QQ:1161588342 说明加好友原因
- 多媒体基础知识之PCM数据
1.什么是PCM音频数据 PCM(Pulse Code Modulation)也被称为脉冲编码调制.PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样.量化.编码转换成的标准的数字音频 ...