连接数据库查询记录集是否为空,为什么老是不为空
文件check.java的部分代码为Connectioncnn=null;PreparedStatementps=null;ResultSetrs=null;boolea...
文件check.java的部分代码为
Connection cnn = null;
PreparedStatement ps = null;
ResultSet rs = null;
boolean flag = false;
try {
cnn = DataBase.getConn();
ps = cnn.prepareStatement(
"select * from user where uid=?");
ps.setString(1, user.getUid());
rs = ps.executeQuery();
if (rs != null) {
flag =true; rs.close();ps.close();
}
else{
flag=false;}
}
catch (Exception es) {
throw es;
}
finally {
cnn.close();
}
return flag;
这个函数传回的总是true,无论uid传过来的值是什么,函数传回的值都是true,不明白为什么老说我记录集都不为空,希望大家解决下,谢谢 展开
Connection cnn = null;
PreparedStatement ps = null;
ResultSet rs = null;
boolean flag = false;
try {
cnn = DataBase.getConn();
ps = cnn.prepareStatement(
"select * from user where uid=?");
ps.setString(1, user.getUid());
rs = ps.executeQuery();
if (rs != null) {
flag =true; rs.close();ps.close();
}
else{
flag=false;}
}
catch (Exception es) {
throw es;
}
finally {
cnn.close();
}
return flag;
这个函数传回的总是true,无论uid传过来的值是什么,函数传回的值都是true,不明白为什么老说我记录集都不为空,希望大家解决下,谢谢 展开
展开全部
Connection cnn = null;
PreparedStatement ps = null;
ResultSet rs = null;
boolean flag = false;
try {
cnn = DataBase.getConn();
ps = cnn.prepareStatement("select * from user where uid=?");
ps.setString(1, user.getUid());
rs = ps.executeQuery();
if (rs != null) { //老大,你这里错啦,rs这个对象始终不会为空一啊! ps.executeQuery()这个方法返回一个记录集ResultSet对象,
//不管此次搜索有没产生记录集,都回返回ResultSet的一个实例,所以你的flag=true不管什么情况下都会执行了,
//只是这个实例中的数据记录集是否为空是要我们程序判断,但是不是 rs 与null比较的
//而是用ResultSet的next()方法检测,next()作用是把当前记录集指针移到下一条记录集上(开始的时候是指向第一条记录集之前的)
//next方法返回true或者false ,当没下一条记录的时候返回false,否则就返回true了
//####所以把if (rs != null) 改为:if (rs.next())就可以了############################
flag =true;
rs.close();
ps.close();
}
else{
flag=false;}
} catch (Exception es) {
throw es;
}
finally {
cnn.close();
}
return flag;
PreparedStatement ps = null;
ResultSet rs = null;
boolean flag = false;
try {
cnn = DataBase.getConn();
ps = cnn.prepareStatement("select * from user where uid=?");
ps.setString(1, user.getUid());
rs = ps.executeQuery();
if (rs != null) { //老大,你这里错啦,rs这个对象始终不会为空一啊! ps.executeQuery()这个方法返回一个记录集ResultSet对象,
//不管此次搜索有没产生记录集,都回返回ResultSet的一个实例,所以你的flag=true不管什么情况下都会执行了,
//只是这个实例中的数据记录集是否为空是要我们程序判断,但是不是 rs 与null比较的
//而是用ResultSet的next()方法检测,next()作用是把当前记录集指针移到下一条记录集上(开始的时候是指向第一条记录集之前的)
//next方法返回true或者false ,当没下一条记录的时候返回false,否则就返回true了
//####所以把if (rs != null) 改为:if (rs.next())就可以了############################
flag =true;
rs.close();
ps.close();
}
else{
flag=false;}
} catch (Exception es) {
throw es;
}
finally {
cnn.close();
}
return flag;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询