问题描述
StringSqluser="selectuserfromuserinformationwhereUserId="+UserId;ResultSetrst2=null;rst2=stm.executeQuery(Sqluser);if(rst2.next())returnvalue=rst2.getInt(1);应该使用if(rst2.next())判断,但是空值时if也为真,rst2.getInt(1)=0;returnvalue=0这个值我还要用到,不能用来判断是空值,谁知道有什么解决办法么?
解决方案
解决方案二:
就是next()方法啊。
解决方案三:
就是用这个判断的booleanflag=false;//为空if(rs2.next()){flag=true;//不为空}
解决方案四:
if判断为null不行吗?
解决方案五:
现在的问题是rs2.next()返回值,不论数据库查询结果是不是空都返回true,数据库查询结果是空时,rst2.getInt(1)=0
解决方案六:
记得有个rst2.rowcount或者类似的方法,先看看拿回来的记录数行不?
解决方案七:
应该使用if(rst2.next())判断,但是空值时if也为真我很怀疑。
解决方案八:
楼主既然通过rst2.getInt(1)=0;判断类数据库查询结果集为空,那问题不就解决了吗,将if条件改为判断rst2.getInt(1)是否为0不就可以了吗?
解决方案九:
再提供一个解决方案:代码:if(rs.next()){list.add(rs.getString(1));while(rs.next()){inti=2;list.add(rs.getString(i++));}returnlist;}else{list.add("Sorry,NosuchUser!");returnlist;}解释一下:最外层用if/else循环,内层while循环,判断如果结果集不为空(rs.next()),那么执行if分支,此时“所谓的”指针已经指向第一条记录了,如果要继续取多条记录,那么只能先以list.add(rs.getString(1))这种方式取出第一条记录,而不能上来就直接while(rs.next()),因为如果这样做,那么此时取出的第一条记录实际上是结果集的第二条记录,既遗失了第一条记录(因为之前已经指向了第一条记录,继续while(rs.next())时是指向了第二条记录)。继续说,取出第一条记录之后,然后再以上面while循环体的方式取出剩下的记录(如果确实还有记录的话,如果没有记录了,循环体不执行,也不会影响效果)。
解决方案十:
rst2.next()是可以判断是否有值的,不知道为什么你那儿不行。不过你代码写成下边这样不就把问题解决了吗?StringSqluser="selectuserfromuserinformationwhereUserId="+UserId;ResultSetrst2=null;rst2=stm.executeQuery(Sqluser);if(rst2.getInt(1)!=0&&rst2.next())returnvalue=rst2.getInt(1);
解决方案十一:
rst2.next()是可以判断是否有值的不然while(rst2.next())的循环咋写的?
解决方案十二:
用rs2.getString(1)==null来判断就行了
解决方案十三:
你先不要使用if(rst2.next())这种判断,虽然这样可以判断出是否存在记录,但是它的游标往下移了一位,你把控不好就不要这么做。最简单的,获取rs2.getInt(1)看看是否有值就行了。
解决方案十四:
可以这样,booleanxxoo=false;while(rst2.next()){xxoo=true;}if(!xxoo){为空;}
解决方案十五:
就是用rst2.next()判断的。。。