解决方案 »

  1.   


    就是用这个判断的
       boolean flag = false;//为空
       if(rs2.next()){
          flag = true;//不为空
       }
      

  2.   

    现在的问题是rs2.next()返回值,不论数据库查询结果是不是空 都返回true,
    数据库查询结果是空时,rst2.getInt(1)=0
      

  3.   

    记得有个rst2.rowcount或者类似的方法,先看看拿回来的记录数行不?
      

  4.   

    应该使用if(rst2.next())判断,但是空值时if也为真我很怀疑。
      

  5.   

    楼主既然通过 rst2.getInt(1)=0;判断类数据库查询结果集为空,那问题不就解决了吗,将if条件改为判断rst2.getInt(1)是否为0不就可以了吗?
      

  6.   

    再提供一个解决方案:
    代码:
    if(rs.next()){
    list.add(rs.getString(1));
    while(rs.next())
                        {
    int i = 2;
            list.add(rs.getString(i++));
                       }
     return list;
     }else{
     list.add("Sorry,No such User!");
     return list;
     }
    解释一下:最外层用if/else循环,内层while循环,判断如果结果集不为空(rs.next()),那么执行if分支,此时“所谓的”指针已经指向第一条记录了,如果要继续取多条记录,那么只能先以list.add(rs.getString(1))这种方式取出第一条记录,而不能上来就直接while(rs.next()),因为如果这样做,那么此时取出的第一条记录实际上是结果集的第二条记录,既遗失了第一条记录(因为之前已经指向了第一条记录,继续while(rs.next())时是指向了第二条记录)。继续说,取出第一条记录之后,然后再以上面while循环体的方式取出剩下的记录(如果确实还有记录的话,如果没有记录了,循环体不执行,也不会影响效果)。
      

  7.   


    rst2.next()是可以判断是否有值的,不知道为什么你那儿不行。不过你代码写成下边这样不就把问题解决了吗?
    String Sqluser="select user from userinformation where UserId = "+UserId;
     ResultSet rst2=null;
     rst2=stm.executeQuery(Sqluser);
     if(rst2.getInt(1)!=0 && rst2.next())
     returnvalue=rst2.getInt(1);
      

  8.   

    rst2.next()是可以判断是否有值的
    不然
    while(rst2.next())的循环咋写的?
      

  9.   

    用rs2.getString(1) == null 来判断就行了
      

  10.   

    你先不要使用if(rst2.next())这种判断,虽然这样可以判断出是否存在记录,但是它的游标往下移了一位,你把控不好就不要这么做。
    最简单的,获取rs2.getInt(1)看看是否有值就行了。
      

  11.   

    可以这样,boolean xxoo=false;while(rst2.next()){
    xxoo=true;
    }if(!xxoo){
    为空;
    }