在vs2005中使用c#我用下面的SQL语句得到一个结果集ds
select ctncount,ctncount*trunc(ctnsize/20) as SD from tb
然后遍历这两个列分别求出他们的和,代码如下:
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
    sum_ctn = sum_ctn + int.Parse(ds.Tables[0].Rows[i][5].ToString());                
    sum_sd_ctn = sum_sd_ctn + int.Parse(ds.Tables[0].Rows[i][6].ToString());
}
执行第一句时没有问题,执行第二句时报错 输入字符串的格式不正确
我弄不清什么原因,请教各位高手,恳请不吝赐教

解决方案 »

  1.   

    ds.Tables[0].Rows[i][6].ToString()是数字内容吗?
      

  2.   

    ds.Tables[0].Rows[i][6].ToString()里的内容可能不是整数,或者是用,隔开的格式也不行
      

  3.   

    同一楼另外
    ds.Tables[0].Rows[i][6]这种写法可读性实在不高最好写成ds.Tables[0].Rows[i]["ColumnName"], 或许你的'6'取错了字段
      

  4.   

    int.Parse的参数不是数字,比如可能是空字符串
      

  5.   

    我在SQL语句中写成cast(ctncount*trunc(ctnsize/20) as integer) as SD 这样应该能够确保查询得到的数据类型和前一列的类型相同都是INTEGER了,可是仍然报这个错啊
      

  6.   

    另外,我写了非空判断
    if (ds.Tables[0].Rows[i][6].ToString() != "")
        sum_sd_ctn = sum_sd_ctn + int.Parse(ds.Tables[0].Rows[i][6].ToString());
    可是得到的结果仍然是报这个错误,看来不应该是空字符串引起的了.