Ich versuche, eine gespeicherte Prozedur aufrufen, die Parameter ausArrayIndexOutOfBoundsException wenn StoredProcedure in Java-Ausführung
Mein Code ist:
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);
aber wenn es die Linie
ausführencallableStatement.executeUpdate();
Es wirft Der Fehler java.lang.ArrayIndexOutOfBoundsException: -1
Ich suchte in verschiedenen Web-Seiten, dieses Problem zu lösen, aber ich selbst herausgefunden, dass die Datenbankverbindung ändert:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/banco?user=user&password=pass");
zu:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
conn = DriverManager.getConnection(DB_CONNECTION, DB_USER,DB_PASSWORD);
lösen das Problem, jetzt möchte ich einen Pool-Verbindung zu schaffen, in tomcat also ändere ich die Verbindung zu:
InitialContext context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/BancoDB");
conn= dataSource.getConnection();
aber wieder wirft es den gleichen Fehler, kann jemand wissen, warum das passiert?
Vielen Dank im Voraus.
EDIT
Dies ist der Fehler:
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)
Wie haben Sie dann Ihre Datenquelle definiert? –
Was meinst du ??, ich modifiziere nur die context.xml des Tomcat, die Verbindung funktioniert, das schlägt nur fehl, wenn ich versuche, einen StoredProcedure aufzurufen, der out Parameter –
den Stacktrace dann –