在编程过程中出现了这样一个问题:
(但是在DB中已经定义了prepareStmt方法,参数也都没问题。不知道到底是出了什么问题)org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 17 in the jsp file: /ReplyDeal.jsp
The method prepareStmt(Connection, String) is undefined for the type DB
14:
15: Connection conn = DB.getConn();
16: String sql = "insert into article values (null, ?, ?, ?, ?, now(), ?)";
17: PreparedStatement pstmt = DB.prepareStmt(conn, sql);
18: pstmt.setInt(1, pid);
19: pstmt.setInt(2, rootId);
20: pstmt.setString(3,title);
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:326)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
(但是在DB中已经定义了prepareStmt方法,参数也都没问题。不知道到底是出了什么问题)org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 17 in the jsp file: /ReplyDeal.jsp
The method prepareStmt(Connection, String) is undefined for the type DB
14:
15: Connection conn = DB.getConn();
16: String sql = "insert into article values (null, ?, ?, ?, ?, now(), ?)";
17: PreparedStatement pstmt = DB.prepareStmt(conn, sql);
18: pstmt.setInt(1, pid);
19: pstmt.setInt(2, rootId);
20: pstmt.setString(3,title);
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:326)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
17: PreparedStatement pstmt = DB.prepareStmt(conn, sql);
18: pstmt.setInt(1, pid);
19: pstmt.setInt(2, rootId);
20: pstmt.setString(3,title);
18: pstmt.setInt(4, pid);
19: pstmt.setInt(5, rootId);
20: pstmt.setString(6,title);
20: pstmt.setString(7,title);
7个不同字段要写7个 不能这样写(null, ?, ?, ?, ?, now(), ?)";
意思是你这个方法 在DB中没有找到匹配的 看看你传递的参数吧
public static PreparedStatement preparedStmt(Connection conn, String sql){
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return pstmt;
}
prepareStmt 这个方法在哪里定义的? 是否将该类导入到了jsp页面
传递的类型不对啊,前边sql不是已经给定了null了嘛!!那怎么还会给set。
如果有默认不填的信息,你最好把需要插入的列名写好,然后在传递。
也就是说在你的DB类里没有prepareStmt(Connection, String)这样的方法
你的DB类里的方法是
public static PreparedStatement preparedStmt(Connection conn, String sql){
prepareStmt和preparedStmt,前者比后者少了一个d
你是重新发布jsp还是什么?可能要把工作目录中的原来被编译好的文件删掉
“prepareStmt”打错了!!!!
16: String sql = "insert into article values (null, ?, ?, ?, ?, now(), ?)";
17: PreparedStatement pstmt = DB.prepareStmt(conn, sql);
18: pstmt.setInt(1, pid);
19: pstmt.setInt(2, rootId);
20: pstmt.setString(3,title);
16行你的null是不是因为这个是自动编号之类的 如果是的话在insert里是不用写出来,写出来反而会有错!!!
17改成PrepareStatement pstmt = con.prepareStatement(sql);
然后我关了myeclipse重启之后又没问题了。。不知道是什么原因。
不过中间弹出了一个Hot Code Replace Failed - Add method not implemented我按了continue没理它