0
Class.forName("com.ibm.db2.jcc.DB2Driver"); 

Connectioncon=DriverManager.getConnection("jdbc:db2://localhost:50000/TEST","db2admin","db2admin"); 

Statement stmt=con.createStatement();

String v=request.getParameter("val");

String query="insert into value values('"+v+"')";

stmt.executeUpdate(query);               

stmt.close();

con.close();

我收到一条错误消息,指出服务器在为 executeUpdate() 命令提供服务时遇到错误。似乎无法弄清楚问题所在。我正在使用 IBM DB2。请帮忙...

在这里,这是我不断收到的错误

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /check.jsp at line 26

23:         String read = "insert into `value` values(?)";
24:         PreparedStatement p = (PreparedStatement) con.prepareStatement(read);
25:         p.setString(1, request.getParameter("val"));
26:         p.executeUpdate();             
27:         p.close();
28:         con.close();
29:         out.println("Everything done..."); 


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:456)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause

javax.servlet.ServletException: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-7, SQLSTATE=42601, SQLERRMC=`;insert into , DRIVER=3.62.56
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:911)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:840)
    org.apache.jsp.check_jsp._jspService(check_jsp.java:99)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
root cause

com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-7, SQLSTATE=42601, SQLERRMC=`;insert into , DRIVER=3.62.56
    com.ibm.db2.jcc.am.fd.a(fd.java:676)
    com.ibm.db2.jcc.am.fd.a(fd.java:60)
    com.ibm.db2.jcc.am.fd.a(fd.java:127)
    com.ibm.db2.jcc.am.jn.c(jn.java:2614)
    com.ibm.db2.jcc.am.jn.d(jn.java:2602)
    com.ibm.db2.jcc.am.jn.a(jn.java:2094)
    com.ibm.db2.jcc.am.kn.a(kn.java:6720)
    com.ibm.db2.jcc.t4.cb.g(cb.java:141)
    com.ibm.db2.jcc.t4.cb.a(cb.java:41)
    com.ibm.db2.jcc.t4.q.a(q.java:32)
    com.ibm.db2.jcc.t4.rb.i(rb.java:135)
    com.ibm.db2.jcc.am.jn.gb(jn.java:2064)
    com.ibm.db2.jcc.am.kn.pc(kn.java:3214)
    com.ibm.db2.jcc.am.kn.b(kn.java:3999)
    com.ibm.db2.jcc.am.kn.dc(kn.java:746)
    com.ibm.db2.jcc.am.kn.executeUpdate(kn.java:729)
    org.apache.jsp.check_jsp._jspService(check_jsp.java:85)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
4

2 回答 2

0

您是否尝试过硬编码该值并查看它是否有效?您是否尝试过直接在数据库上执行您的 sql 语句以确保您具有正确的语法?请参阅下面的安全插入示例。

        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection con = (Connection) DriverManager.getConnection(DBurl, user, password);
        String read = "insert into `value` values(?)";
        PreparedStatement p = (PreparedStatement) con.prepareStatement(read);
        p.setString(1, request.getParameter("val"));
        p.executeUpdate();
于 2012-11-11T19:03:42.233 回答
0

如果您尝试插入的数据类型是 BIGINT,那么p.setString将不起作用,因为 setString 用于设置字符数据类型。

你必须使用

p.setLong(1, request.getParameter("val"));

请参阅此处的文档

于 2012-11-12T18:16:10.707 回答