如图:我查询的数据返回到dataTable里,是空的,没数据,然后下面的判断中的count却是1,进入else里了,导致else代码报错:无数据无法转换。
求教是什么原因,明明查出没数据为什么count却是1。

解决方案 »

  1.   

    缓存了吧,重新生成解决方案试试.如果不好使就证明dataTable确实有数据.转换失败的原因可能是数据值是空的.如果用dataTable直接获取数据库,那么数据库查询出来的数据如果是null,那么在dataTable中不会是null而是空字符串,也就是"".那么你将""转换成int就会出错了.你可以用int.TryParse这个函数试一下,有两个参数第一参数是要转换的字符串类型,第二个参数是个out类型的.也就是输出转换后的int值,返回值是个布尔型,返回是否转换成功.//例如
    int ai;
    if(int.TryParse("6",out ai))
    {
         ai++;
    }
      

  2.   

    现在不是转换的问题,刚刚我重新生成了,还是那样,我查的是一个字段,显示是空的,但count却是1。而且我用count(*)查,结果得到0,说明没查出数据的,但count就是1,不知道什么问题。
      

  3.   

    看你截图里面是有一行吧?只是这一行里面的数据是空的,但是对于DataTable来说是有一行的
      

  4.   

    在sql查询其中跑你的sql语句,肯定是有一行返回的,只不说字段值为空
      

  5.   

    可是我用count(*) 查返回的是0
      

  6.   

    count(*) 返回是0,不等于一行没有.你这样,你建一个临时表,只有一个字段,你插入20条NULL,然后你在用count(*)查询你一下,你看看返回是不是0,这是sql的机制,count函数只计算有数据的行数,并不计算空数据的行数.很简单的办法就是,在where条件后面加上一句,"字段 is not null" 就可以了啊.如果null对你有意义,那么就不能加那个where条件了.那么我们就需要知道空行和空数据的区别了.如果你数据库什么都没有查询到,那么datatable是会被实例化的,但是datatable的rows.count的值是0,如果查询的结果是有数据,但是这个数据是个null值,那么datatable中获得是一个空字符串,但是rows的count是1,因为datatable中确实有一行数据,只不过这行数据的值是个null值.
      

  7.   

    我语句后面加了wo_no is not null,还是不行,结果还是1