快纠结死了,一个while()循环,条件为true的情况下居然进不去!!亲们看看代码吧
public User findUserByName(String userName)
{

User user=null;

con=getConnection();//此方法是父类的,不必考虑
if(con!=null)
{
try
{
pstmt=con.prepareStatement("select * from users where userName=?");
pstmt.setString(1, userName);

rs=pstmt.executeQuery();
System.out.println(rs.next());//此处结果为true
while(rs.next())//循环体有错?我纠结....
{
System.out.println("进入循环体");//这里居然没有显示在控制台!!!
user=new User(); user.setUserId(rs.getInt(1));
user.setUserName(rs.getString(2));
System.out.println(rs.getInt(1));
}
} catch (SQLException e)
{
System.out.println("进入异常处理");
// TODO Auto-generated catch block
e.printStackTrace();
}

finally
{
System.out.println("进入finally");
closeAll(pstmt, rs, con);
}
System.out.println("结束");
}
return user;
}
得到的结果如下:
true
进入finally
结束
纳尼,这到底是咋回事!!我实在是没辙了。
java

解决方案 »

  1.   

    只有一条记录,执行一次next就没了
    修改: 
    System.out.println(rs.hasNext());
      

  2.   

                    System.out.println(rs.next());//此处结果为true
    注视掉上面这句试试,这句执行内部"指针"也移动。
      

  3.   

    这是该方法所在类的属性package com.mysql.dao;import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;import com.mysql.entity.User;public class UserDao extends BaseDao
    {
    private Connection con;
    private ResultSet rs;
    private PreparedStatement pstmt;
    rs没有hasNext()这个方法谢谢
      

  4.   

    每执行一次next()方法,结果集就向前移动一次,直接注释掉System.out.println(rs.next())就可以了,其实上面的都已经说的很清楚了,呵呵
      

  5.   

    rs.next()执行一次就向后移动一位,
    如果只有一条数据的话
     System.out.println(rs.next());//此处结果为true, 
     while(rs.next())//这时又执行一次,导致为false,
      

  6.   

      System.out.println(rs.next());//此处结果为true 
    不能随便输出啊注了