2013-01-20 29 views
0

我想检查用户是否投了或没有用下面的这个方法。我使用了与登录和登录完全相同的方法。 ResultSet执行查询部分发生错误。这是为了检查用户是否已经投票。jsp页面上的异常与结果集

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">  
+2

您的堆栈跟踪不显示异常 – Archer

+0

org.apache.jasper.JasperException:发生处理JSP页/Gadgets.jsp例外,在管线40 37:<%db.DBConnection分贝=新db.DBConnection(); 38:ArrayList myProducts = db.getAllProducts(); 39:User u = db.getUser(session.getAttribute(“Username”)。toString()); 40:布尔值checkVote = db.checkVote(u.getId()); 41:if(checkVote == true) 42:{%> 43:

+0

您是否使用与粘贴完全相同的代码这里?因为我认为在你的sql代码中'+ userId +'''“'有一个小错误 - 你的代码中还有两个''''或者这只是你的问题中的一个错误?如果你的代码看起来和这里相同,那么'JasperException'可能有异常,某种'SQLException'和'JasperException'只是'SQLException'的一个效果。它是真的吗? – emka86

回答

0

不是关于你的例外,但有你的代码中的注释。由于你没有使用语句参数(通过?),你不需要PreparedStatement,你可以使用简单的Statement并通过connection.createStatement。或者更好的方法是继续使用PreparedStatement并通过参数userId

更多关于此here

现在你例外。似乎checkVote方法是您的servlet方法,而不是您的db对象的方法。但是,您正试图拨打db'scheckVote。这是JasperException的原因。

+0

checkVote方法是在同一个类DBConnection类 –

+0

那么请将类边界放到您的源代码中,因为这不是什么明显的checkVote – Archer

+0

你是什么意思请? –