繁体   English   中英

在Java中执行StoredProcedure时出现ArrayIndexOutOfBoundsException

[英]ArrayIndexOutOfBoundsException when executing StoredProcedure in java

我尝试调用没有参数的存储过程

我的代码是:

CallableStatement callableStatement = conn.prepareCall("{CALL banco.sppro_prepagoprestamo(?,?,?,?,NOW(),?,?)}");
callableStatement.registerOutParameter(1, Types.VARCHAR);
callableStatement.registerOutParameter(2, Types.INTEGER);
callableStatement.setString(3,cuenta);
callableStatement.setString(4,monto);
callableStatement.setString(5,usuarioIdLog);
callableStatement.setString(6,tipoPago);
callableStatement.executeUpdate();
String msg = callableStatement.getString(1);
int codigo = callableStatement.getInt(2);

但是当它执行行时

callableStatement.executeUpdate();

它将引发错误java.lang.ArrayIndexOutOfBoundsException:-1

我在不同的网页中搜索以解决此问题,但我自己发现更改数据库连接的方式是:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn    =   DriverManager.getConnection("jdbc:mysql://localhost:3306/banco?user=user&password=pass");

至:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn    =   DriverManager.getConnection(DB_CONNECTION, DB_USER,DB_PASSWORD);

解决问题,现在我想在tomcat中创建一个池连接,因此我将连接更改为:

InitialContext context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/BancoDB");
conn= dataSource.getConnection();

但是同样会引发相同的错误,有人知道为什么会这样吗?

提前致谢。

编辑

这是错误:

java.lang.ArrayIndexOutOfBoundsException: -1
    com.mysql.jdbc.CallableStatement.setOutParams(CallableStatement.java:2088)
    com.mysql.jdbc.CallableStatement.executeUpdate(CallableStatement.java:822)
    org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
    org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
    org.apache.jsp.credito.procesos.creproprepagoprestarjeta.creProPrepagoCtaVirtualGraba_jsp._jspService(creProPrepagoCtaVirtualGraba_jsp.java:1455)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

这是已经固定在MySQL驱动程序的一个已知问题5.1.13更多的细节在这里 ,所以解决您的错误简单地将其升级到最新版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM