对象不能从 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
展开
展开全部
数据库的字段是NULL值,而数据库的NULL值在代码中用DBNULL.value表示,不能转成其他类型,这个类型比较特殊,dbnull可以被tostring(),你可以对字段先.tostring()在转
看你的转换是想转换成int型,这个tostring后会是string.empty,也还是不能转int,加个判断吧
if(is dbnull)
{
int i = -1;//自己定吧
}
else
{
Convert.ToInt32(值)
}
在存入数据时,要是去判断,不然就吧-1存进去了,更改了原来的dbnull,注意下就行,这个比较特殊
看你的转换是想转换成int型,这个tostring后会是string.empty,也还是不能转int,加个判断吧
if(is dbnull)
{
int i = -1;//自己定吧
}
else
{
Convert.ToInt32(值)
}
在存入数据时,要是去判断,不然就吧-1存进去了,更改了原来的dbnull,注意下就行,这个比较特殊
展开全部
从数据库里面拿到的值是空值但是转换成另一种类型的时候要求不能是空值,比如DateTime,Boolean之类的,这时需要在拿到值的时候try或catch一下,或者直接设置该列不能为空,给他一个默认值就行了。
DBNull在DotNet是单独的一个类型 System.DBNull 。它只有一个值 DBNull.Value 。DBNull直接继承 Object ,所以 DBNull 不是 string , 不是 int , 也不是 DateTime
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-30
展开全部
水电工山覆盖
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用三元运算符吧
decimal ret=data[0]==DBNull.Value ? 0M : Convert.ToDecimal(data[0])
decimal ret=data[0]==DBNull.Value ? 0M : Convert.ToDecimal(data[0])
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
赋值之前判断一下数据类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询