快纠结死了,一个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
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
修改:
System.out.println(rs.hasNext());
注视掉上面这句试试,这句执行内部"指针"也移动。
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()这个方法谢谢
如果只有一条数据的话
System.out.println(rs.next());//此处结果为true,
while(rs.next())//这时又执行一次,导致为false,
不能随便输出啊注了