2013-01-13 1 views

답변

74

대신 :

rs = ps.executeQuery(Query); 
rs = ps.executeQuery(); 

그렇지 않으면, 당신은 unprepare 당신의 문을 당신이 그것을에게 새로운 SQL 문을 할당하기 때문에 (이 같은 비록) 모든 매개 변수를 잃게 :당신은 실행해야한다.

+0

놀라운 Codo. 좋은 explaination도 – Oliver

+0

나에게서 upvote의 명확히 가치가있는. 내가 그걸 빨리 봤으면 좋겠어. – JeremyP

0

이메일 열을 추가 ..

String uname,pass; 
    ResultSet rs = null; 
    response.setContentType("text/html"); 
    PrintWriter out=response.getWriter(); 
    try 
    { 
    uname=request.getParameter("uname"); 
    pass=request.getParameter("pass"); 
    Connection con=prepareConnection(); 
    String Query="select uname from passmanager where pass=?"; 
    PreparedStatement ps=con.prepareStatement(Query); 
    ps.setString(1,pass); 
    rs=ps.executeQuery(Query); 
    if (rs.next() && uname.equalsIgnoreCase(rs.getString("uname")) || uname.equalsIgnoreCase(rs.getString("email"))) { 
    HttpSession session = request.getSession(true); 
    session.setAttribute("uname", rs.getString(1)); 

    ServletContext context = getServletContext(); 
    RequestDispatcher dispatcher = context 
        .getRequestDispatcher("/profile"); 
    dispatcher.forward(request, response); 
    } 

중 하나가 나에게이 문제를 해결하는 데 도움이

select uname, email from passmanager where pass=? 
+0

미안 나는 그것을 잊어 버렸습니다. 그러나 지금도 문제는 동일하게 남아 있습니다 ... 나는 문제가 준비된 성명서라고 생각합니다. – ajay

0

이 오류는 결과 집합에없는 이름 (rs.getString ("uname"))을 사용하여 필드를 가져 오려고 할 때 나타납니다.

그리고 igr이 말한 것처럼 rs.getString ("email")을 사용하여 전자 메일 필드를 가져 오려고 시도했지만 쿼리에 포함되어 있지 않으므로 이것은 사용자 오류입니다.

문자열 끝에 공백이있는 필드를 얻으려고 할 때 응용 프로그램에서 동일한 오류가 발생했기 때문에이 대화를 발견했습니다 (rs.getString ("uname") 대신 rs.getString (.

) "끝나면 uname"그리고 난 그냥 쿼리에서 얻고 있었다 분야에 대한 올바른 이름을 사용하여 문제를 해결할 나는 그것이 유용 희망

을;.!)

관련 문제