簡體   English   中英

使用准備好的語句登錄Servlet

[英]Servlet login with prepared statement

我嘗試找出以下代碼中的錯誤在哪里:

public void service(HttpServletRequest request, HttpServletResponse response){
        try{
            user1 = request.getParameter("nameLog");
            pass1 = request.getParameter("passLog");
            String userid = null;
            String passdb = null;
            String query = "select user, pass from login where `user` = ? and `pass`=?";

            PreparedStatement pst = conn.prepareStatement(query);
            ResultSet rs = pst.executeQuery();
            pst.setString(1, user1);
            pst.setString(2, pass1);

            while(rs.next()){
                userid = rs.getString("user1");
                passdb = rs.getString("pass1");

                pst.executeQuery();
            }
            if(userid.equals(user1)&& passdb.equals(pass1)){
                response.sendRedirect("/WebContent/login/Main.html");

            }


        }catch(Exception ex){
        ex.printStackTrace();
        }
    }

我嘗試登錄到我的應用程序(數據庫列名稱為userpass ),但出現錯誤:

java.sql.SQLException: No value specified for parameter 1

在這一行

ResultSet rs = pst.executeQuery();

如何擺脫此錯誤並登錄到我的頁面?

謝謝

訂單很重要! 您需要在調用executeQuery之前傳遞參數,如下所示:

PreparedStatement pst = conn.prepareStatement(query);            
pst.setString(1, user1);
pst.setString(2, pass1);            
ResultSet rs = pst.executeQuery();

您正在執行查詢,然后再設置值。 它應該是:

PreparedStatement pst = conn.prepareStatement(query);
pst.setString(1, user1);
pst.setString(2, pass1);

ResultSet rs = pst.executeQuery();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM