当前位置:编程学习 > JAVA >>

java问题

在编程过程中出现了这样一个问题:
(但是在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方法,如果有的话估计是你参数传错了。参数类型不对引起的 --------------------编程问答-------------------- 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);
18: pstmt.setInt(4, pid);
19: pstmt.setInt(5, rootId);
20: pstmt.setString(6,title);
20: pstmt.setString(7,title);
7个不同字段要写7个   不能这样写(null, ?, ?, ?, ?, now(), ?)";
--------------------编程问答-------------------- method prepareStmt(Connection, String) is undefined for the type DB
意思是你这个方法 在DB中没有找到匹配的 看看你传递的参数吧 --------------------编程问答--------------------
引用 1 楼 lwb314 的回复:
你的DB里没有prepareStmt方法,如果有的话估计是你参数传错了。参数类型不对引起的

这是我DB中的方法(参数好像也没有错啊 )
public static PreparedStatement preparedStmt(Connection conn, String sql){
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return pstmt;

} --------------------编程问答--------------------
引用 4 楼 aviat0r 的回复:
引用 1 楼 lwb314 的回复:
你的DB里没有prepareStmt方法,如果有的话估计是你参数传错了。参数类型不对引起的

这是我DB中的方法(参数好像也没有错啊 )
public static PreparedStatement preparedStmt(Connection conn, String sql){
PreparedStatement pstmt = null;
……

 错了  是prepareStmt --------------------编程问答-------------------- The method prepareStmt(Connection, String) is undefined for the type DB
prepareStmt 这个方法在哪里定义的? 是否将该类导入到了jsp页面 --------------------编程问答--------------------
引用 6 楼 zn85600301 的回复:
The method prepareStmt(Connection, String) is undefined for the type DB
prepareStmt 这个方法在哪里定义的? 是否将该类导入到了jsp页面

prepareStmt封装到DB中了,也import到jsp中了 --------------------编程问答--------------------
引用楼主 aviat0r 的回复:
在编程过程中出现了这样一个问题:
(但是在DB中已经定义了prepareStmt方法,参数也都没问题。不知道到底是出了什么问题)

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 17 in the jsp file: /ReplyDeal.j……


传递的类型不对啊,前边sql不是已经给定了null了嘛!!那怎么还会给set。
如果有默认不填的信息,你最好把需要插入的列名写好,然后在传递。 --------------------编程问答-------------------- prepareStmt与preparedStmt明显不一样嘛 --------------------编程问答--------------------
引用 9 楼 sjkof 的回复:
prepareStmt与preparedStmt明显不一样嘛

   改正过来以后还是一样的错误  --------------------编程问答-------------------- 类型转换问题,应该哪里的类型对应不起来! --------------------编程问答-------------------- The method prepareStmt(Connection, String) is undefined for the type DB
也就是说在你的DB类里没有prepareStmt(Connection, String)这样的方法
你的DB类里的方法是
public static PreparedStatement preparedStmt(Connection conn, String sql){
prepareStmt和preparedStmt,前者比后者少了一个d --------------------编程问答--------------------
引用 12 楼 qybao 的回复:
The method prepareStmt(Connection, String) is undefined for the type DB
也就是说在你的DB类里没有prepareStmt(Connection, String)这样的方法
你的DB类里的方法是
public static PreparedStatement preparedStmt(Connection conn, St……

问题的关键是改正过来之后还是出现的这个错误 --------------------编程问答-------------------- 将你的连接数据库的这段代码放在 main方法里去测试
--------------------编程问答--------------------
引用 13 楼 aviat0r 的回复:
引用 12 楼 qybao 的回复:
The method prepareStmt(Connection, String) is undefined for the type DB
也就是说在你的DB类里没有prepareStmt(Connection, String)这样的方法
你的DB类里的方法是
public static PreparedStatement preparedStmt……

改过来后还发生同样的错误,你确信报错是同一行?是不是其他地方还有同样的错误?
你是重新发布jsp还是什么?可能要把工作目录中的原来被编译好的文件删掉 --------------------编程问答-------------------- “17: PreparedStatement pstmt = DB.prepareStmt(conn, sql);”
“prepareStmt”打错了!!!! --------------------编程问答-------------------- 参数的类型搞错了吧?? --------------------编程问答-------------------- 路过观望! --------------------编程问答-------------------- 如果不是每个字段都需插入数据,那么要把需要插入数据的字段列出来,另外,既然有些已有值,那么在预置参数的时候无需set --------------------编程问答--------------------
引用 14 楼 zn85600301 的回复:
将你的连接数据库的这段代码放在 main方法里去测试


试了一下   没出什么问题
--------------------编程问答-------------------- 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);


16行你的null是不是因为这个是自动编号之类的  如果是的话在insert里是不用写出来,写出来反而会有错!!!
17改成PrepareStatement pstmt = con.prepareStatement(sql); --------------------编程问答-------------------- 这坑爹的。。我也出现这个问题。。。
然后我关了myeclipse重启之后又没问题了。。不知道是什么原因。
不过中间弹出了一个Hot Code Replace Failed - Add method not implemented我按了continue没理它 --------------------编程问答-------------------- 重启MyEclipse,重新部署一下 --------------------编程问答-------------------- --------------------编程问答-------------------- 参数里5个?号  为什么异常里报的参数只有三个? --------------------编程问答-------------------- 难道你的JSP里面没有导入DB所需要的类
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,