如何判断数据库中select取到的值是空
String Sqluser="select user from userinformation where UserId = "+UserId;ResultSet rst2=null;
rst2=stm.executeQuery(Sqluser);
if(rst2.next())
returnvalue=rst2.getInt(1);
应该使用if(rst2.next())判断,但是空值时if也为真,rst2.getInt(1)=0;
returnvalue=0这个值我还要用到,不能用来判断是空值,
谁知道有什么解决办法么? select 空值 判断 --------------------编程问答-------------------- 就是next()方法啊。 --------------------编程问答--------------------
就是用这个判断的
--------------------编程问答-------------------- if判断为null不行吗? --------------------编程问答-------------------- 现在的问题是rs2.next()返回值,不论数据库查询结果是不是空 都返回true,
boolean flag = false;//为空
if(rs2.next()){
flag = 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())
{
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循环体的方式取出剩下的记录(如果确实还有记录的话,如果没有记录了,循环体不执行,也不会影响效果)。 --------------------编程问答--------------------
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); --------------------编程问答-------------------- rst2.next()是可以判断是否有值的
不然
while(rst2.next())的循环咋写的? --------------------编程问答-------------------- 用rs2.getString(1) == null 来判断就行了 --------------------编程问答-------------------- 你先不要使用if(rst2.next())这种判断,虽然这样可以判断出是否存在记录,但是它的游标往下移了一位,你把控不好就不要这么做。
最简单的,获取rs2.getInt(1)看看是否有值就行了。 --------------------编程问答-------------------- 可以这样,
boolean xxoo=false;
while(rst2.next()){
xxoo=true;
}
if(!xxoo){
为空;
} --------------------编程问答-------------------- 就是用rst2.next()判断的。。。
补充:Java , Java SE