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

用户代码未处理System.InvalidCastExceptionMessage=对象不能从DBNull转换为其他类型.Source=mscorlibStackTrac... 用户代码未处理 System.InvalidCastException Message=对象不能从 DBNull 转换为其他类型. Source=mscorlib StackTrace: 在 System.DBNull.System.IConvertible.ToInt32(IFormatProvider provider) 在 System.Convert.ToInt32(Object value) 在 FictionDAL.DBHelper.GetS 展开
 我来答
等不到的落幕
推荐于2017-11-26 · TA获得超过312个赞
知道小有建树答主
回答量:137
采纳率:100%
帮助的人:103万
展开全部
数据库的字段是NULL值,而数据库的NULL值在代码中用DBNULL.value表示,不能转成其他类型,这个类型比较特殊,dbnull可以被tostring(),你可以对字段先.tostring()在转
看你的转换是想转换成int型,这个tostring后会是string.empty,也还是不能转int,加个判断吧
if(is dbnull)
{
int i = -1;//自己定吧
}
else
{
Convert.ToInt32(值)
}
在存入数据时,要是去判断,不然就吧-1存进去了,更改了原来的dbnull,注意下就行,这个比较特殊
松鼠就是我
2018-03-30 · TA获得超过1.6万个赞
知道小有建树答主
回答量:5
采纳率:0%
帮助的人:1529
展开全部

从数据库里面拿到的值是空值但是转换成另一种类型的时候要求不能是空值,比如DateTime,Boolean之类的,这时需要在拿到值的时候try或catch一下,或者直接设置该列不能为空,给他一个默认值就行了。

DBNull在DotNet是单独的一个类型 System.DBNull 。它只有一个值 DBNull.Value 。DBNull直接继承 Object ,所以 DBNull 不是 string , 不是 int , 也不是 DateTime

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-11-30
展开全部
水电工山覆盖
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友80ecd27
2019-05-24
知道答主
回答量:2
采纳率:0%
帮助的人:1425
展开全部
使用三元运算符吧
decimal ret=data[0]==DBNull.Value ? 0M : Convert.ToDecimal(data[0])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mydocument2020
2013-12-02 · TA获得超过202个赞
知道小有建树答主
回答量:187
采纳率:100%
帮助的人:138万
展开全部
赋值之前判断一下数据类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式