2014-12-08 2 views
1

Я пытаюсь выяснить, где ошибка в моем коде ниже:Servlet Войти с подготовленным заявлением

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(); 
     } 
    } 

Я пытаюсь войти в мое приложении (имена столбцов БДА user и pass), но я получаю Ошибка:

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

в этом ряду

ResultSet rs = pst.executeQuery(); 

Как я могу избавиться от эту ошибку и войдите в мою страницу?

Thanks

ответ

5

Информация для заказа! Вам нужно передать параметры перед вызовом executeQuery, например, так:

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

Мы получили разницу только в одну секунду, а моя была за одну секунду до того, как вы по-прежнему останетесь для вас;) – gprathour

1

Вы выполняете запрос перед установкой значения. Это должно быть:

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

ResultSet rs = pst.executeQuery(); 
Смежные вопросы