2016-05-01 18 views
-1

このコードは、結果セットが閉じられた後に操作を実行できないというエラーを表示しています。私は間違っていることを理解していない。前もって感謝します。ResultSetが閉じられた後に操作が許可されない(JSP)

<%@page import="java.sql.*"%> 
<% 
    String username = request.getParameter("username"); 
    String password = request.getParameter("password"); 

    //JDBC CODE 
    try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
     Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/**", "****", "******"); 
    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 
    ResultSet rs = stmt.executeQuery("select * from add_user_table where name='"+username+"' and password='"+password+"'"); 
    if(rs.next()) 
    { 
     String name=rs.getString("name"); 
     String pass = rs.getString("password"); 
     if(username.equals(name) && password.equals(pass)) 
     { 
     session.setAttribute("username",username); 
     response.sendRedirect("any.jsp"); 
     } 
     else 
     { 
     response.sendRedirect"any2.jsp?msg=Invalid"); 
     } 
    } 
    else 
    { 
     response.sendRedirect("any2.jsp?msg=Invalid"); 
    } 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
} 
%> 
+1

私は明らかにSQLインジェクションのリスクを伴うコードを書くのは良い習慣だとは思わない。 – MikeCAT

+2

スタックトレースが必要です。なぜあなたは、SQLと次のJacaコードの両方で一致するものをチェックしていますか? – EJP

+0

表示されているコードにこのエラーが発生することはありません。スタックトレースを投稿してください。 –

答えて

-2

私はあなたがResultSet閉じたエラーを取得している理由はおそらくある1つのインスタンスを、確認対象となる(rs.next)場合は、使用しているので、それはだと思います。 while(rs.next)に変更して、それぞれをスキャンします。

私は、あなたのJSPページでは、JSTL(Javaサーバーのページ・タグ・ライブラリー)とEL(Expression Language)コードを選択してサーブレット・データを参照するようにしました。 MVCタイプのアーキテクチャを遵守してください。

+1

これはどうしたら可能でしょうか? 'if'を' while'に変更すると、 'ResultSet closed'エラーをどうやって解決できるのでしょうか?この答えは意味をなさない。 – EJP

+0

私は、そのような高い評判と知識を持つ人物が、現実の問題の代替案を断念することなく、そのようなやり方で反応することに驚いています。あなたは明らかに私の問題を解決するのは慎重であると感じましたが、私の評判からわかるように私は始めているだけで、一度アドバイスをしていただければ幸いです。 – morpheus1977

関連する問題