使用预准备语句登录Servlet

DRa*_*lav 1 java servlets

我试着找出,我的代码中的错误在哪里:

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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我尝试登录到我的应用程序(db列名称是userpass)但我得到一个错误:

java.sql.SQLException: No value specified for parameter 1
Run Code Online (Sandbox Code Playgroud)

在这一排

ResultSet rs = pst.executeQuery();
Run Code Online (Sandbox Code Playgroud)

如何摆脱此错误并登录我的页面?

谢谢

shr*_*t18 5

订单很重要!您需要在调用之前传递参数executeQuery,如下所示:

PreparedStatement pst = conn.prepareStatement(query);            
pst.setString(1, user1);
pst.setString(2, pass1);            
ResultSet rs = pst.executeQuery();
Run Code Online (Sandbox Code Playgroud)