if(rs.next())块放在while之后(rs.next())永远不会输入

时间:2016-03-08 14:59:18

标签: java if-statement jdbc

在下面的代码段中,始终会调用else。即使成功输入了if块,也永远不会输入while

while (rs.next()) {

     username = rs.getString(2);
     password = rs.getString(3);

}
if(rs.next())
{
   response.sendRedirect("Welcome.jsp");

}        
else {
  response.sendRedirect("Fail.jsp");
}

这是如何引起的?如何解决?

2 个答案:

答案 0 :(得分:1)

你可能想要的东西:

if(rs.next()) {
    username = rs.getString(2);
    password = rs.getString(3);
    response.sendRedirect("Welcome.jsp");
} else {
    response.sendRedirect("Fail.jsp");
}

答案 1 :(得分:0)

查看结果集next() next方法的文档。

  

当对rs.next()方法的调用返回false时,光标为   位于最后一排之后。

因此,当控件来自while循环时,游标已经到达最后一行之后的位置,因此boolean exists = false; while(rs.next(){ exists = true; //other logic } if(exists){ response.sendRedirect("Welcome.jsp"); }永远不会返回true。我想建议一些改变:

  • 在while循环中添加一个标志,设置为true,控制进入while循环,然后检查该标志,例如:

    librabbitmq-dev

  • 在代码中添加适当的here