问答详情
源自:2-5 JDBC实战---搭建模型层 Ⅲ

dao中方法get() ,获得一个对象时为何还要while(rs.next)?

public goddess get(Integer id) throws Exception{
  Connection conn=DBUtil.getConnection();
  String sql=""+
   " select * from goddess "+
   " where id =? ";
  PreparedStatement ptmt=conn.prepareStatement(sql);
  ptmt.setInt(1, id); 
  ResultSet rs=ptmt.executeQuery();//executeQuery()用来执行查询
      goddess g;
   g=new goddess();
   while(rs.next()){
    g.setUser_name(rs.getString("user_name"));
    g.setAge(rs.getInt("age"));
    g.setEmail(rs.getString("email"));
   }
   return g ;
 }

既然数据库查询返回已经是一个条目了,为什么还要循环赋值?

难道rs.next() 不是读取下一个条目?

提问者:慕少9021734 2017-03-30 11:22

个回答

  • 小小幻术师
    2017-05-14 21:28:45

    每次返回的都是一个结果集,哪怕结果集是只有一个元素

  • 慕粉1556379847
    2017-04-25 10:49:30

    我也觉得没必要,因为传入的是ID,ID 唯一。但我觉得如果传入的参数是生日或姓名等可能重复的条件,该语句就变得有意义了,所以说应该是编写习惯,这样的程序更具有普遍性。

  • foradawn
    2017-03-30 12:20:05

    判断返回集是否有数据,有则为true

    然后由于get方法是通过id获取数据,而id设为主键,所以id唯一,实际上如果读取到数据,rs.nest()为true,此时返回集也只有一个数据,下次rs.nest()的值就为false,然后该段代码退出死循环