如果你的结果集为空的话,那么你的这行语句就错了:
rs = resultSet.next();
你可以这么判断查询出的结果集是否为空:
rs.next();
例:
if (rs.next()) {
...
}
或者用在循环里:
while (rs.next()) {
}
rs = resultSet.next();
你可以这么判断查询出的结果集是否为空:
rs.next();
例:
if (rs.next()) {
...
}
或者用在循环里:
while (rs.next()) {
}
一定要用的话,那好象是逻辑判断上的错误!
if(rs.next())
{
//不为空
}
else
{
//为空
}
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;
}
rs = resultSet.next();不应该要
我把它去掉
但是后面的语句为什么不行呢
r1 = resultSet.isAfterLast();
r2 = resultSet.isBeforeFirst();
if(r1==false && r2==false){
rs = true;
}
难道java提供的方法不能用?
if(rs.isLast())
结果集为空}
catch(Exception err){}
...
}
或者用在循环里:
while (rs.next()) {
}
已经判断出来是否为空了!
你还要r1 = resultSet.isAfterLast();
r2 = resultSet.isBeforeFirst();
if(r1==false && r2==false){
rs = true;
}
做什么用?完全是多余的!
{}来判断,但根据你的因该为:
r1=statement.execute(sql);
if(r1)
{
rs=statement.executeQuery(sql);
}
//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;
}
就是rs.next()直接为false就是null那!