大意导致Java访问DB2库时导出SQLCODE=-301, SQLSTATE=07006错误
本人在寫一個java模塊,目的是把數據插入到DB2庫中,由于自己在建模時不知何時將表中一個字段由varchar修改成decimal,并且將此表重新建到開發庫中,為此導致以前寫好的功能模塊報錯,本人很納悶,但又不知道什么原因,雖然知道可能是自己造成的,但具體原因卻無論如何也想不起來,只能通過一個個可能的問題排查,最終找出是由于修改表的字段類型所致,以下,是建表語句、JAVA代碼、和拋出的異常:
java代碼:
???????????
表結構如下:
create table TEST.YSB( XH DECIMAL(18) not null generated by default as identity, YSBNR BLOB(5242880), JGXH DECIMAL(18),);以上軟件運行時,會拋出如下異常:
com.ibm.db2.jcc.b.SqlException: DB2 SQL Error: SQLCODE=-301, SQLSTATE=07006, SQLERRMC=9, DRIVER=3.50.152
?at com.ibm.db2.jcc.b.wc.a(wc.java:55)
?at com.ibm.db2.jcc.b.wc.a(wc.java:126)
?at com.ibm.db2.jcc.b.tk.b(tk.java:1593)
?at com.ibm.db2.jcc.b.tk.c(tk.java:1576)
?at com.ibm.db2.jcc.t4.db.k(db.java:353)
?at com.ibm.db2.jcc.t4.db.a(db.java:59)
?at com.ibm.db2.jcc.t4.t.a(t.java:50)
?at com.ibm.db2.jcc.t4.tb.b(tb.java:200)
?at com.ibm.db2.jcc.b.uk.Gb(uk.java:2355)
?at com.ibm.db2.jcc.b.uk.e(uk.java:3129)
?at com.ibm.db2.jcc.b.uk.Bb(uk.java:1842)
?at com.ibm.db2.jcc.b.uk.execute(uk.java:1826)
?at com.pdcss.court.zjzx.servlet.UploadExcelServlet.saveZip(UploadExcelServlet.java:318)
?at com.pdcss.court.zjzx.servlet.UploadExcelServlet.saveYsb(UploadExcelServlet.java:294)
?at com.pdcss.court.zjzx.servlet.UploadExcelServlet.processRequest(UploadExcelServlet.java:94)
?at com.pdcss.court.zjzx.servlet.UploadExcelServlet.doPost(UploadExcelServlet.java:143)
?at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
?at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
?at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
?at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
?at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:124)
?at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
?at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
?at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
?at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
?at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
?at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
?at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
?at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
?at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
?at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
?at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
?at java.lang.Thread.run(Thread.java:619)
如果將上述java代碼的第4行修改為
pstm.setNull(2, Types.DECIMAL);就可以正確無誤了,當然解決辦法你也可以將表的字段類型修改回varchar。
總結
以上是生活随笔為你收集整理的大意导致Java访问DB2库时导出SQLCODE=-301, SQLSTATE=07006错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决Flutter运行IOS报错:Pod
- 下一篇: 关于ASCII码