2012-11-11 46 views
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。請幫助...的executeUpdate()不工作

這裏,這是我一直的錯誤越來越

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) 
+0

在你的表值,什麼是您要插入列的數據類型?這是一個字符數據類型還是其他的東西? – user75ponic

+0

您是使用'createStatement'還是'preparedStatement'?在上面發佈的代碼中,您正在使用'createStatement',而在例外情況下它顯示爲'preparedStatement'。 – user75ponic

+0

該列的數據類型是BIGINT。首先,我嘗試了createStatement,然後切換到preparedStatement。這兩個時間我得到相同的錯誤,executeUpdate()不起作用 –

回答

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(); 
+0

是的,我試圖硬編碼的價值,以及直接在數據庫上執行SQL語句。 –

+0

是的,我已經嘗試了所有的是,它仍然不工作.. –

+0

試網址'check.jsp?VAL = aaa' – Andrew

0

如果您的數據鍵入您要插入的BIGINT,那麼p.setString將無法​​正常工作,因爲了setString用於設置字符數據類型。

你必須使用

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

參見文檔here