首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

QueryRunner.update抛出错误,麻烦大侠帮忙分析一下呀

2012-04-04 
QueryRunner.update抛出异常,麻烦大侠帮忙分析一下呀~我在程序中使用了DBUtil组件Java codeimport java.io

QueryRunner.update抛出异常,麻烦大侠帮忙分析一下呀~
我在程序中使用了DBUtil组件  
 

Java code
import java.io.IOException;import java.io.PrintWriter;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.Date;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.sql.DataSource;import org.apache.commons.dbutils.*;public class AddMessage extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doPost(request,response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("utf-8");                String sql = "insert into guestbook (id,name,email,phone,title,content,time) values (gb_seq.nextval,?,?,?,?,?,?)";        int result = 0;        response.setContentType("text/html;charset=utf-8");        PrintWriter out = response.getWriter();        out                .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");        out.println("<HTML>");        out.println("  <HEAD><TITLE>Add Message</TITLE></HEAD>");        out.println("  <BODY>");        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss aaa");        String name = request.getParameter("name");        String title = request.getParameter("title");        if(StringUtil.validateNull(name)){                out.println("名字不能为空!请重新输入!");                out.println("<a href=\""+request.getContextPath()+"/AddMessage.htm>添加留言</a>");            }        if(StringUtil.validateNull(title)){                out.println("主题不能为空!请重新输入!");                out.println("<a href=\""+request.getContextPath()+"/AddMessage.htm>添加留言</a>");            }        String[] params = {StringUtil.filterHtml(name),                    StringUtil.filterHtml(request.getParameter("email")),                    StringUtil.filterHtml(request.getParameter("phone")),                    StringUtil.filterHtml(title),                    request.getParameter("content"),                    sdf.format(new Date())};        try {            Context initCon = new InitialContext();            DataSource ds = (DataSource) initCon.lookup("java:comp/env/jdbc/oracledb");            QueryRunner qr = new QueryRunner(ds);            //-------------------第86行---------------------------------                        result = qr.update(sql, params);            //------------------------        } catch (NamingException e) {            e.printStackTrace();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }         if(result==0) {            out.println("对不起,添加留言不成功,请您重新输入!<br>");            out.println("<a href=\""+request.getContextPath()+"/AddMessage.htm\">添加新的留言</a><br>");        }        else {            out.println("添加留言成功!<br>");            out.println("<a href=\""+request.getContextPath()+"/servlet/GetMessage\">查看留言</a><br>");        }                out.println("  </BODY>");        out.println("</HTML>");        out.flush();        out.close();    }} 



异常代码:
java.lang.AbstractMethodError: oracle.jdbc.driver.OraclePreparedStatement.getParameterMetaData()Ljava/sql/ParameterMetaData;
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.getParameterMetaData(DelegatingPreparedStatement.java:223)
at org.apache.commons.dbutils.QueryRunner.fillStatement(QueryRunner.java:174)
at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:593)
at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:653)
at AddMessage.doPost(AddMessage.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)


[解决办法]
我也碰到类似的问题,查了好久,终于解决了,其实很简单,DBUtils版本不对,我原来用的是commons-dbutils-1.2.jar,运行报错,跟楼主一样的错误,后来换成commons-dbutils-1.1.jar就OK了!
楼主可以试一试,希望出错原因一样!

热点排行