首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

SQL语句的错误报错~啥原因

2013-07-09 
SQL语句的异常报错~~啥原因?问题描述:当搜索结果有数据的时候一切正常,当数据库里没搜索条件的数据的时候

SQL语句的异常报错~~啥原因?
问题描述:当搜索结果有数据的时候一切正常,当数据库里没搜索条件的数据的时候报错,附代码

DataSet xfs = sqlhelper.ExecutDataset("select sum(sj) sj1,sum(lc) lc1 from  main where   datediff(d,date,'" + hf1.Value + "')<=0 and datediff(d,date,'" + hf2.Value + "')>=0");
        if (xfs != null && xfs.Tables[0].Rows.Count > 0)
        {
            DataTable dt = xfs.Tables[0];
            DataRow dr=xfs.Tables[0].Rows[0];
            sjxfs = Convert.ToDecimal(dr["sj1"].ToString());
            lcxfs = Convert.ToDecimal(dr["lc1"].ToString());

            list1.DataSource = dt;
            list1.DataBind();
        }


异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 74:             DataTable dt = xfs.Tables[0];
行 75:             DataRow dr=xfs.Tables[0].Rows[0];
行 76:             sjxfs = Convert.ToDecimal(dr["sj1"].ToString());

76行出错,数据库里数据都是float类型的,求解决办法
[解决办法]
引用:
Quote: 引用:

Convert.ToDecimal(dr["sj1"].ToString()
你把dbnull转换成数字当然要出错了

好像是这样,在SQL管理器里查询是好的,没数据出来NULL,应该是
Convert.ToDecimal(dr["sj1"].ToString()
的问题,该怎么改啊?

数据库都没查出来,为null,Convert.ToDecimal(dr["sj1"].ToString()转换当然报错哦,
你确定这样写sql语句,是没得数据??还是你的sql有问题,即使查出来为空,你也应该改判断
if(为空)
{
  model中这个sj1字段赋值为0
}
------解决方案--------------------


引用:
Quote: 引用:

Convert.ToDecimal(dr["sj1"].ToString()
你把dbnull转换成数字当然要出错了

好像是这样,在SQL管理器里查询是好的,没数据出来NULL,应该是
Convert.ToDecimal(dr["sj1"].ToString()
的问题,该怎么改啊?

if(dr.IsNull("sj1"))
{
为空时
}
else
{
convert
}

热点排行