2 u012576799 u012576799 于 2016.03.22 19:35 提问

结果集不执行rs.next()

为什么结果集不执行rs.next()? 结果集一直是空的 求各位大神 帮个忙吧

public class LoginDao {
public Users login(String name,String password){
Users users = null;
//连接数据库
Connection conn = ConnectDB.getConnection();
String sql = "select * from users where name = ? and password = ?";
//ResultSet rs = null;//结果集
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
System.out.println("123456778980909989789");
System.out.println(rs.first());
while (rs.next()) {
//从结果集中取出内容放到模型集合中
System.out.println("dao:" + rs.getString("name"));
System.out.println("dao:" + rs.getString("password"));
Users us = new Users();
// us.setId(rs.getInt("id"));
us.setName(rs.getString("name"));
us.setNo(rs.getString("no"));
us.setIdentity(rs.getString("identity"));
us.setClasses(rs.getString("classes"));
us.setGrade(rs.getString("grade"));
us.setSubject(rs.getString("subject"));
us.setScore(rs.getString("score"));
us.setPassword(rs.getString("password"));
//usersList.add(us);
}
// 释放此 ResultSet 对象的数据库和 JDBC 资源
rs.close();
// 释放此 PreparedStatement 对象的数据库和 JDBC 资源
conn.close();
}catch (Exception e){
e.printStackTrace();
}
return users;
}

}

4个回答

yue1123
yue1123   2016.03.22 19:54

检查下数据库是否有对应的SQL查询数据,如果查询没有符合条件的数据,那rs为空也是正常的。

u012576799
u012576799 回复yue1123: 把SQL 语句注释掉?后面的都错了啊 这个代码里我加了一个rs.frist() 控制台输出的是false
2 年多之前 回复
yue1123
yue1123 回复彼岸阳光灬小皮: 能不能把这句注释掉后再试下System.out.println(rs.first());
2 年多之前 回复
u012576799
u012576799 SELECT * FROM users where name= '张三' AND password = '123456'
2 年多之前 回复
yue1123
yue1123 回复彼岸阳光灬小皮: 那你直接用SQL语句,不要用?的方式,看能不能查询出来?还有能不能贴出你用SQL直接查询数据库后的结果图,以及name变量和password变量的值?
2 年多之前 回复
u012576799
u012576799 数据库没有问题的 可以查询
2 年多之前 回复
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.22 19:59

有没有异常信息呢?数据库连接有没有成功?

Jiavo
Jiavo   2016.03.22 20:02

1.你的数据库中user表中添加了一条数据没?如果没有添加一条
2.你试试把while改成if试一试。
你看看怎么样

u012576799
u012576799 user表里有数据的 我估计应该是查询的问题
2 年多之前 回复
AinUser
AinUser   2016.03.22 20:32

为什么你这里rs。next后面不是用:for循环去遍历输出呢

u012576799
u012576799 rs.next本身不就是遍历么?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
在结果集对象调用next()方法时出现了空指针异常
 在if条件语句中使用了next()方法。应该先判断一下rs是否为空,如果不为空则调用next()方法,若为空则不调用。 或者 将if(rs.next()){}或while(rs.next())这样的语句放在try{}catch(){}语句里面。 其实这个问题的根源在于没有对这些操作捕获异常,所以在编写操作数据库的代码时一定要用throws或try catch来捕捉异常,这样才能达到安全的目的
rs.next 问题
if(rs.next()) { rs.first(); } else { dos.writeUTF("false"); } while(rs.next()) { String result = rs.getString(3)+rs.getString(4)+rs.getString(5)+rs.getString(6); dos.write
循环遍历rs结果集存入Map集合
Map map = new HashMap(); for (int j = 0;rs.next() ;j++) { String startDate1 =rs.getString("year"); String currency = rs.getString("currency"); double amount = rs.getDouble("amount");
!!!求教,java进行数据库查询,re.next()为true,但不执行if(re.next())分支
部分代码如下: if(re.getConnection()){ String sql="select Userid from Users where Username='"+Username+"'"; System.out.println(sql); re.query(sql); //boolean b=re.next(); Syst
rs.next()为false导致resultset遍历不出数据
网上查找到的时数据库字符集错误, 我的原因是通过ResultsetMetaData    可以取到表字段跟字段种类 ,证明连接成功,但是 数据却是空的, 像我的错误出在使用pl/sql编辑数据进行测试时没有提交事务处理,没有插入成功, 获取方法reseultset各字段:  http://blog.csdn.net/sun2445067/article/details/649216
rs.next() 只能调用一次
ResultSet rs ; rs.next() 只能调用一次 第一次: System.out.println(rs.next());          true 第二次 System.out.println(rs.next());          false
while (rs.next()) 与 if(rs.next())的区别
如果说是"判断结果集里有没有值" 那么用if(rs.next)  while是用来做循环输出的 换句话说 就是"如果结果集里还有值" 没有则停止循环 这个一般在JSP做显示用 1、rs = stmt.exeQuery(sql)后,rs肯定不会为null,注意,是rs对象不会为null,而不是其包含的result 2、既然rs不会为null,所以在rs = stmt.exeQuer
ResultSet中做if判断时next()两次取不到第一条数据的问题
JDBC判断数据库查询结果集是否为空 通常来说都是用rs.next()来判断结果集是否为空,但是由于执行rs.next()后指针指向的是结果集中的第一条记录,此时再用while(rs.next())取结果集中的数据就会导致第一条数据无法得到。所以用以下代码段是个比较好的判断方法。 if(!rs.next())   //结果集为空 {                  //执行某操
while(rs.next())和if(rs.next())
首先要明确几点: 1、rs = stmt.exeQuery(sql)后,rs肯定不会为null,注意,是rs对象不会为null,而不是其包含的result 2、既然rs不会为null,所以在rs = stmt.exeQuery(sql)后,使用while(rs.next())或者if(rs.next())时就不用判断rs != null; 3、rs.next时,游标最先是指向第一条记录前的位
oracle JDBC 查询 rs.next()总报false
oracle JDBC 查询 rs.next()总报false 其实呢这个问题很简单 ,作为博主的我也是好久没接触oralce 最近为方便面试 回到jdbc 却发现 总查不到数据,debug找了好久 ,最后硬是深深发一下。方便以后避免 问题就那么简单 女朋友下晚自习给我发个消息,然后瞬间想到 可能刚创建的数据库 没有commit(提交) 醉了!!真是爱情的力量伟大啊! 大家看懂了没有???