查询数据库怎样判断结果集为空(在线等!!!!!!!!急!!!!)

007remember 2004-06-10 11:58:37
我写了一个关于查询数据库,判断结果集是否为空的方法,没有达到预期目的
代码如下:

public boolean isValidateUser(String n, String p) {

boolean rs = false;
boolean r1 = false;
boolean r2 = false;
try {
statement = getStatement();
String sql = "select * from 用户信息 where 用户名='"+n+"' and 密码='"+p+"'";
resultSet = statement.executeQuery(sql);
rs = resultSet.next();

r1 = resultSet.isAfterLast();
r2 = resultSet.isBeforeFirst();
if(r1==false && r2==false){
rs = true;
}

}
catch (Exception e) {
e.printStackTrace();
}
finally {
this.close();
}
return rs;
}
...全文
1071 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhushizu 2004-06-11
  • 打赏
  • 举报
回复
上面的方法也不行。因为如果正好是最后一个元素那也不能算空!!!

其实要判断结果是不是空不一定要用游标的,有专门的SQL函数的哦。
一定要用的话,那好象是逻辑判断上的错误!
kkkkwx 2004-06-11
  • 打赏
  • 举报
回复
如果你的结果集为空的话,那么你的这行语句就错了:
rs = resultSet.next();
你可以这么判断查询出的结果集是否为空:
rs.next();
例:
if (rs.next()) {
...
}
或者用在循环里:
while (rs.next()) {
}
007remember 2004-06-11
  • 打赏
  • 举报
回复
kkkkwx 你说的对
rs = resultSet.next();不应该要
我把它去掉
但是后面的语句为什么不行呢
r1 = resultSet.isAfterLast();
r2 = resultSet.isBeforeFirst();
if(r1==false && r2==false){
rs = true;
}
难道java提供的方法不能用?

007remember 2004-06-11
  • 打赏
  • 举报
回复
谢谢大家了
谢谢
viklove 2004-06-11
  • 打赏
  • 举报
回复
// 如果返回为false,表示结果集为空
viklove 2004-06-11
  • 打赏
  • 举报
回复
// 如果返回true说明结果集不为空,


public boolean isValidateUser(String n, String p) {

boolean rs = false;
// boolean r1 = false;
// boolean r2 = false;
try {
statement = getStatement();
String sql = "select * from 用户信息 where 用户名='"+n+"' and 密码='"+p+"'";
resultSet = statement.executeQuery(sql);
rs = resultSet.next();

// r1 = resultSet.isAfterLast();
// r2 = resultSet.isBeforeFirst();
// if(r1==false && r2==false){
// rs = true;
// }

}
catch (Exception e) {
e.printStackTrace();
}
finally {
this.close();
}
return rs;
}
hq1305018 2004-06-11
  • 打赏
  • 举报
回复
判断ResultSet是否为空,就用下面的方法。
if(rs.next())
{
//不为空
}
else
{
//为空
}
wandou999 2004-06-11
  • 打赏
  • 举报
回复
while(rs.next)
{
...
}
Arias 2004-06-11
  • 打赏
  • 举报
回复
你的rs没有返回的
就是rs.next()直接为false就是null那!
wangsheng1028 2004-06-11
  • 打赏
  • 举报
回复
public boolean isValidateUser(String n, String p) {

boolean rs = false;
//boolean r1 = false;
//boolean r2 = false;
try {
statement = getStatement();
String sql = "select * from 用户信息 where 用户名='"+n+"' and 密码='"+p+"'";
resultSet = statement.executeQuery(sql);
rs = resultSet.isLast();
//r1 = resultSet.isAfterLast();
//r2 = resultSet.isBeforeFirst();
//if(r1==false && r2==false){
// rs = true;
//}

}
catch (Exception e) {
e.printStackTrace();
}
finally {
this.close();
}
return rs;
}
camel4057 2004-06-11
  • 打赏
  • 举报
回复
可以用if(rs.next())
{

}来判断,但根据你的因该为:
r1=statement.execute(sql);
if(r1)
{
rs=statement.executeQuery(sql);
}
flywind63 2004-06-11
  • 打赏
  • 举报
回复
你想判断是否为空,但是if (rs.next()) {
...
}
或者用在循环里:
while (rs.next()) {
}
已经判断出来是否为空了!
你还要r1 = resultSet.isAfterLast();
r2 = resultSet.isBeforeFirst();
if(r1==false && r2==false){
rs = true;
}
做什么用?完全是多余的!
congliu 2004-06-11
  • 打赏
  • 举报
回复
try{
if(rs.isLast())
结果集为空

}
catch(Exception err){}

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧