My environment is JDK 1.6, Eclipse Indigo, JBoss 4.2.3.GA-jdk6. The database is Microsoft SQL Server 2008 R2. I am using jTDS JDBC Driver.
I have a string which has multiple SQL statements (UPDATE, DELETE and INSERT).
String sqlString = "update ta_rule_pakt set description = 'Syed Test 1', active_flag = '1' where paktpk = '7' update ta_rule_break_header_paky with (rowlock) set start_time = 14400, end_time = 32364, break_code = 17, break_type = 1 where pakt_ta_rule = '7' and step = 1 delete from ta_rule_break_detail_pakz with (rowlock) where paky_ta_rule_break_header = 2 insert into ta_rule_break_detail_pakz with (rowlock) (pakzpk, paky_ta_rule_break_header, pay_code) values(14,2, 17 ) insert into ta_rule_break_detail_pakz with (rowlock) (pakzpk, paky_ta_rule_break_header, pay_code) values(15,2, 14 )";
I tried to execute it:
Connection cx = null;
Statement st = null;
cx = getConnection();
st = cx.createStatement(); // create sql statement
st.addBatch(sqlString);
int a[] = st.executeBatch();
But int a[] = st.executeBatch();
is throwing an Exception
java.lang.ArrayIndexOutOfBoundsException: 1
although the SQL statements did update the data correctly in the database.
Why I am getting an error when the SQLs are correct?
The full exception stacktrace is:
2018-09-15 22:45:12,618 ERROR [STDERR] java.lang.ArrayIndexOutOfBoundsException: 1 2018-09-15 22:45:12,618 ERROR [STDERR] at net.sourceforge.jtds.jdbc.JtdsStatement.executeBatch(JtdsStatement.java:935) 2018-09-15 22:45:12,619 ERROR [STDERR] at com.mycompany.ejb.MiscellaneousBean.UpdatePayCategoryBreakPaycode(MiscellaneousBean.java:45517)
2018-09-15 22:45:12,619 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2018-09-15 22:45:12,619 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
2018-09-15 22:45:12,620 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2018-09-15 22:45:12,620 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:597)
2018-09-15 22:45:12,620 ERROR [STDERR] at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
2018-09-15 22:45:12,621 ERROR [STDERR] at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:237)
2018-09-15 22:45:12,621 ERROR [STDERR] at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:158)
2018-09-15 22:45:12,621 ERROR [STDERR] at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:169)
2018-09-15 22:45:12,621 ERROR [STDERR] at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
2018-09-15 22:45:12,621 ERROR [STDERR] at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
2018-09-15 22:45:12,622 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:404)
2018-09-15 22:45:12,622 ERROR [STDERR] at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
2018-09-15 22:45:12,622 ERROR [STDERR] at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
2018-09-15 22:45:12,622 ERROR [STDERR] at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
2018-09-15 22:45:12,622 ERROR [STDERR] at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
2018-09-15 22:45:12,622 ERROR [STDERR] at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
2018-09-15 22:45:12,623 ERROR [STDERR] at org.jboss.ejb.Container.invoke(Container.java:960)
2018-09-15 22:45:12,623 ERROR [STDERR] at sun.reflect.GeneratedMethodAccessor103.invoke(Unknown Source)
2018-09-15 22:45:12,623 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
2018-09-15 22:45:12,623 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:597)
2018-09-15 22:45:12,623 ERROR [STDERR] at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
2018-09-15 22:45:12,623 ERROR [STDERR] at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
2018-09-15 22:45:12,624 ERROR [STDERR] at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
2018-09-15 22:45:12,624 ERROR [STDERR] at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
2018-09-15 22:45:12,624 ERROR [STDERR] at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
2018-09-15 22:45:12,624 ERROR [STDERR] at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)
2018-09-15 22:45:12,624 ERROR [STDERR] at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)
2018-09-15 22:45:12,624 ERROR [STDERR] at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:209)
2018-09-15 22:45:12,624 ERROR [STDERR] at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
2018-09-15 22:45:12,625 ERROR [STDERR] at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
2018-09-15 22:45:12,625 ERROR [STDERR] at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
2018-09-15 22:45:12,625 ERROR [STDERR] at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
2018-09-15 22:45:12,625 ERROR [STDERR] at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
2018-09-15 22:45:12,625 ERROR [STDERR] at $Proxy148.UpdatePayCategoryBreakPaycode(Unknown Source)
2018-09-15 22:45:12,625 ERROR [STDERR] at org.apache.jsp.TARules_005fPayCategoryBreakPaycodeSelectionUpdate_jsp._jspService(TARules_005fPayCategoryBreakPaycodeSelectionUpdate_jsp.java:195)
2018-09-15 22:45:12,626 ERROR [STDERR] at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
2018-09-15 22:45:12,626 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
2018-09-15 22:45:12,626 ERROR [STDERR] at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
2018-09-15 22:45:12,626 ERROR [STDERR] at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
2018-09-15 22:45:12,626 ERROR [STDERR] at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
2018-09-15 22:45:12,626 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
2018-09-15 22:45:12,627 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
2018-09-15 22:45:12,627 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2018-09-15 22:45:12,627 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
2018-09-15 22:45:12,627 ERROR [STDERR] at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
2018-09-15 22:45:12,627 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
2018-09-15 22:45:12,627 ERROR [STDERR] at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
2018-09-15 22:45:12,627 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
2018-09-15 22:45:12,627 ERROR [STDERR] at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
2018-09-15 22:45:12,628 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
2018-09-15 22:45:12,628 ERROR [STDERR] at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
2018-09-15 22:45:12,628 ERROR [STDERR] at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
2018-09-15 22:45:12,628 ERROR [STDERR] at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
2018-09-15 22:45:12,628 ERROR [STDERR] at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
2018-09-15 22:45:12,628 ERROR [STDERR] at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
2018-09-15 22:45:12,628 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
2018-09-15 22:45:12,628 ERROR [STDERR] at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
2018-09-15 22:45:12,629 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
2018-09-15 22:45:12,629 ERROR [STDERR] at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
2018-09-15 22:45:12,629 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
2018-09-15 22:45:12,629 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
2018-09-15 22:45:12,629 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2018-09-15 22:45:12,629 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2018-09-15 22:45:12,629 ERROR [STDERR] at com.mycompany.base.filter.BaseFilter.doFilter(BaseFilter.java:81)
2018-09-15 22:45:12,629 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2018-09-15 22:45:12,630 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2018-09-15 22:45:12,630 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
2018-09-15 22:45:12,630 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2018-09-15 22:45:12,630 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2018-09-15 22:45:12,630 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
2018-09-15 22:45:12,630 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
2018-09-15 22:45:12,630 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
2018-09-15 22:45:12,630 ERROR [STDERR] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
2018-09-15 22:45:12,631 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
2018-09-15 22:45:12,631 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
2018-09-15 22:45:12,631 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
2018-09-15 22:45:12,631 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
2018-09-15 22:45:12,631 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
2018-09-15 22:45:12,631 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
2018-09-15 22:45:12,632 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
2018-09-15 22:45:12,632 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
2018-09-15 22:45:12,632 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
2018-09-15 22:45:12,632 ERROR [STDERR] at java.lang.Thread.run(Thread.java:662)
com.mycompany
is only my code in above stracktrace
Did you try breaking out the calls into multiple statements to try to isolate which command is throwing the exception? Also it's odd that you're not separating each statement with a semicolon.
cx = getConnection();
st = cx.createStatement(); // create sql statement
String stmt1 = "update ta_rule_pakt set description = 'Syed Test 1', active_flag = '1' where paktpk = '7'";
String stmt2 = "update ta_rule_break_header_paky with (rowlock) set start_time = 14400, end_time = 32364, break_code = 17, break_type = 1 where pakt_ta_rule = '7' and step = 1";
String stmt3 = "delete from ta_rule_break_detail_pakz with (rowlock) where paky_ta_rule_break_header = 2";
String stmt4 = "insert into ta_rule_break_detail_pakz with (rowlock) (pakzpk, paky_ta_rule_break_header, pay_code) values(14,2, 17 )";
String stmt5 = "insert into ta_rule_break_detail_pakz with (rowlock) (pakzpk, paky_ta_rule_break_header, pay_code) values(15,2, 14 )";
st.execute(stmt1);
st.execute(stmt2);
st.execute(stmt3);
st.execute(stmt4);
st.execute(stmt5);