rs.next(); -- 从查询出来的集合中拿出了一条数据
表示的集合表中的第一个对象。
如果说你在做数据库查询的时候,返回了一个Result结果集。只有一条数据是,常常很容易犯了这样的错误。
先对数据进行判断。
数据库中的数据:
这里有两条数据
//查询一条用户信息
public User select(User t) {
int in = 0;
sql = "select * from blog_users where blogstate=? ";
conn = DBconn.getConnection();
try {
ps = conn.prepareStatement(sql);
System.out.println(t);
ps.setInt(1, in);
rs = ps.executeQuery();
// if(rs.next()){//在这里进行判断集合中是否有数据存在...其实这里集合已经拿到集合中的第一条数据
User user =null;
while(rs.next()){//这里已经是第二条
System.out.println(rs.getString("username"));
user = new User();
user.setUserid(rs.getInt("userid"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
user.setNickname(rs.getString("nickname"));
user.setBlogstate(rs.getInt("blogstate"));
user.setUserstate(rs.getInt("userstate"));
System.out.println("用户对象:"+user);
}
return user;
// }
} catch (SQLException e) {
System.out.println("查询用户"+t.getUsername()+"可能不存在!");
e.printStackTrace();
}finally{
// DBconn.close(rs, stm, ps);
}
System.out.println("该对象不存在"+in);
return null;
}
User [blogstate=0, email=null, nickname=null, password=null, userid=0, username=abc123456, userstate=0]
abc123456
用户对象:User [blogstate=0, email=123456@qq.com, nickname=灵嗅, password=aaaa, userid=1, username=abc123456, userstate=1]
cde4567
用户对象:User [blogstate=0, email=4567@qq.com, nickname=空灵, password=bbbb, userid=2, username=cde4567, userstate=1]
很多时候,我们都会有一个习惯先去判断下;
因为rs.next()返回的是true 和false 如果集合中有数据返回的就是true
判断完成我们再去遍历
这样数据就会少点。从第二条数据开始遍历。当然,如果你当前查询的只是一条数据的话。那你遍历的结果始终都是null。
所以千万不要做这样的判断。我可能是之前对这个认识的不够,所以才犯了这样一个错误。