使用数据库登录验证

时间:2014-02-19 12:10:02

标签: java database servlets

当输入的用户存在于数据库中时,结果集的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");
    }    
}

2 个答案:

答案 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();