如何判断 ResultSet Rs 为空?

wantfly 2003-12-12 04:11:32
如何判断 ResultSet Rs 为空?
用wasNull()似乎没用,Rs中查出的即使是空记录,用wasNull()得出的照样是假值。
如何真正判断 Rs 是否为空。用哪个方法?
...全文
990 20 打赏 收藏 举报
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
卜算子优乐 2003-12-16
如果RS没有记录那么rs.getRow()肯定是等于0 的,就可以判断了。
  • 打赏
  • 举报
回复
不行吗,下次我试试

我记得是
if(!rs.isAfterLast() && !rs.isBeforeFirst())
当时也是做一个分页程序,用if(rs.next())滚动了一条记录,不好。

  • 打赏
  • 举报
回复
foolfish 2003-12-12
同样的问题竟然有人和我问的一摸一样
不过还是有很多人没有理解概念就回答

如果仅仅是 if(rs.next())这样记录会被滚一条,必须条会来才能正确while

我的问题最后也是上面的nanman帮解决的
不过他的code有点问题,改成


### ### ### ### ### ### ### ###
(内容已经被马塞克)





无敌反马塞克软件启动~!!




if(rs.isAfterLast()==rs.isBeforeFirst()){
记录为空
}else{
while(rs)..
}


后就正常了.


其实就是因为ResultSet没有提供一个isempty的方法,不然就没这么多事儿了.
  • 打赏
  • 举报
回复
WOnion 2003-12-12
这你也问
  • 打赏
  • 举报
回复
cricketlj 2003-12-12
to:sammy791010(javabird)
null和没有记录不是一个概念,请分清楚了。他现在是要判断是不是空,并不是判断我的rs返回的记录的行数等于0。
  • 打赏
  • 举报
回复
if(!rs.isAfterLast() && !rs.isBeforeFirst())
  • 打赏
  • 举报
回复
sammy791010 2003-12-12
if(rs.next())没错
  • 打赏
  • 举报
回复
lixiang823517 2003-12-12
rs.last();
是将ResultSet指向最后一条记录!
后面的就一目了然了哦
  • 打赏
  • 举报
回复
lixiang823517 2003-12-12
rs.last();
然后判断
if(rs.getRow()>0)《返回int值》
大于0就不为空
else......
  • 打赏
  • 举报
回复
cricketlj 2003-12-12
if(rs.next())
如果为false,不就是为空么

说的不对。如果你的rs为null的话,rs.next()会出现控指针错误,

if(rs == null)
{
读取数据库错误
}esle{
if(rs.size() == 0){
//表示没有找到相应的记录
}
}
rs为null和rs没有记录不是一个概念!!
  • 打赏
  • 举报
回复
peter207 2003-12-12
试一下getFetchSize()
  • 打赏
  • 举报
回复
angelface 2003-12-12
if(rs.next())就行了
  • 打赏
  • 举报
回复
peter207 2003-12-12
wasNull()的意思是最后读取得字段值是否为null,而不是记录是否为空
  • 打赏
  • 举报
回复
shanxia 2003-12-12
int i=0;
while (rs.next())
{
i++;
}
if (i==0) rs为空
  • 打赏
  • 举报
回复
yebinlei2003 2003-12-12
if the "stmt" is wrong ,the "rs" will be null. And your programe will throw a fatal error.
so ,u must write as follows:
if(rs!=null)
{
while(rs.next())
{
//specific operation...
}
}
  • 打赏
  • 举报
回复
camelxz 2003-12-12
if(rs.next())
  • 打赏
  • 举报
回复
mzqali1 2003-12-12
java.sql.Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
// retrieve and print the values for the current row
int i = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
System.out.println("ROW = " + i + " " + s + " " + f);
}
  • 打赏
  • 举报
回复
zsyzdw 2003-12-12
if(rs.next())
如果为false,不就是为空么

说得对
  • 打赏
  • 举报
回复
qjhaaaaa 2003-12-12
if(rs == null)
{
读取数据库错误
}
if(rs.size() == 0){
表示没有找到相应的记录
}
if(rs.next)
为false也表示为空
  • 打赏
  • 举报
回复
onizuka5211 2003-12-12
if(rs.next())
如果为false,不就是为空么
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2003-12-12 04:11
社区公告
暂无公告