当输入的用户存在于数据库中时,结果集的if
部分会运行,但如果不存在,则else
部分不运行。为什么呢?
这是我的代码。
String thisname=request.getParameter("username");
String thispwd=request.getParameter("password");
//Query for selecting user name and password from database.
String query = "select * from login where username=?";
pstmt = (PreparedStatement) con.prepareStatement(query);
pstmt.setString(1, thisname);
res = pstmt.executeQuery();
while(res.next())
{
System.out.println("hhh");
if ((thisname.equals(res.getString("username"))) && (thispwd.equals(res.getString("password"))))
{
System.out.println("hello");
}
else
{
System.out.println("in");
session.invalidate();
response.sendRedirect("index.html");
}
}
答案 0 :(得分:2)
@ user1069186:这是因为如果输入的用户不存在,那么在这种情况下res.next()
将始终返回false,而控件将永远不会进入。因此,在您的代码中,不会使用else
部分。
尝试使用以下修改过的代码:
String thisname=request.getParameter("username");
String thispwd=request.getParameter("password");
//Query for selecting user name and password from database.
String query = "select * from login where username=?";
pstmt = (PreparedStatement) con.prepareStatement(query);
pstmt.setString(1, thisname);
res = pstmt.executeQuery();
if(res.next())
{
System.out.println("hhh");
if ((thisname.equals(res.getString("username"))) && (thispwd.equals(res.getString("password"))))
{
System.out.println("hello");
}
}else {
System.out.println("in");
session.invalidate();
response.sendRedirect("index.html");
}
让我知道它是怎么回事。
答案 1 :(得分:1)
@SuneetBansal说得对。否则使用此方法。
String thisname=request.getParameter("username");
String thispwd=request.getParameter("password");
//Query for selecting user name and password from database.
String query = "select * from login where username=?";
pstmt = (PreparedStatement) con.prepareStatement(query);
pstmt.setString(1, thisname);
res = pstmt.executeQuery();
while (res.next())
{
thisname= res.getString("username");
thispwd= res.getString("password");
break;
}
res.close();
pstmt.close();