我正在尝试检查用户是否已使用此方法投票。我使用与登录相同的方法,登录工作完美。 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">
答案 0 :(得分:0)
不是关于你的例外情况,而是对你的代码有评论。由于您未使用语句参数(通过?
传递),因此您不需要PreparedStatement
,因此您可以使用简单的Statement
并通过connection.createStatement
获取它。或者更好的方法是继续使用PreparedStatement
并通过参数传递userId
。
有关此here
的更多信息现在关于你的例外。似乎checkVote
方法是您的servlet方法,而不是db
对象的方法。但您正试图致电db's
checkVote
。这是JasperException
的原因。