0

以下のこの方法で、ユーザーが投票したかどうかを確認しようとしています。ログインと同じ方法を使用しましたが、ログインは完全に機能します。ResultSetの実行クエリ部分でエラーが発生しています。これは、ユーザーがすでに投票したかどうかを確認するためです。

public boolean checkVote(int userId) throws ClassNotFoundException, SQLException{        
    String query = "SELECT * FROM polls WHERE User='"+ userId +"''";        
    connect();        
    PreparedStatement ps = (PreparedStatement) dbConnection.prepareStatement(query);
    ResultSet results = (ResultSet)ps.executeQuery();

    while(results.next())
    {
         return true;
    }
    disconnect();
    return false;

}

スタックトレース:

     org.apache.jasper.JasperException: An exception occurred processing JSP page     /    Gadgets.jsp at line 40

 37:                 <%db.DBConnection db = new  db.DBConnection(); 
 38:                 ArrayList<Product> myProducts =db.getAllProducts();
 39:                 User u = db.getUser(session.getAttribute("Username").toString());
 40:                 boolean checkVote = db.checkVote(u.getId());
 41:                 if(checkVote == true)
 42:                                        { %>
 43:                                          <form id="Gadgets" action="Gadgets.jsp"      method="post">    
4

1 に答える 1

0

あなたの例外についてではありませんが、コードにコメントがあります。?必要のない (渡された)ステートメント パラメーターを使用していないためPreparedStatement、 simpleStatementを使用して を取得できますconnection.createStatement。または、より良いアプローチは、パラメーターを使用PreparedStatementして渡すことです。userId

詳細はこちら

今あなたの例外について。そのcheckVoteメソッドは、dbオブジェクトのメソッドではなく、サーブレット メソッドのようです。しかし、あなたは電話しようとしていますdb's checkVote。これが の理由ですJasperException

于 2013-01-20T15:48:20.840 に答える