Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] El botón eliminar dejó de funcionar

Cuando selecciono la fila de las Zapatillas y hago clic en el botón Eliminar, me aparece el siguiente error:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.sql.SQLException: Parameter index out of range (0 < 1 ).
    at com.alura.jdbc.view.ControlDeStockFrame.lambda$2(ControlDeStockFrame.java:222)
    at java.base/java.util.Optional.ifPresentOrElse(Optional.java:196)
    at com.alura.jdbc.view.ControlDeStockFrame.eliminar(ControlDeStockFrame.java:213)
    at com.alura.jdbc.view.ControlDeStockFrame$3.actionPerformed(ControlDeStockFrame.java:147)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
    at java.desktop/java.awt.Component.processEvent(Component.java:6391)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.sql.SQLException: Parameter index out of range (0 < 1 ).
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
    at com.mysql.cj.jdbc.ClientPreparedStatement.checkBounds(ClientPreparedStatement.java:1372)
    at com.mysql.cj.jdbc.ClientPreparedStatement.getCoreParameterIndex(ClientPreparedStatement.java:1388)
    at com.mysql.cj.jdbc.ClientPreparedStatement.setInt(ClientPreparedStatement.java:1576)
    at com.alura.jdbc.controller.ProductoController.eliminar(ProductoController.java:46)
    at com.alura.jdbc.view.ControlDeStockFrame.lambda$2(ControlDeStockFrame.java:219)
    ... 38 more

El botón me funcionaba correctamente, pero ahora ya no, y no puedo seguir con la clase.

1 respuesta

Hola Johnny,

¿Ha podido resolver este problema? El error parece estar relacionado con la forma en que estás configurando los parámetros en tu consulta SQL. El error java.sql.SQLException: Parameter index out of range (0 < 1 ) generalmente indica que estás intentando acceder a un parámetro en una posición que no existe.

En Java, los índices de los parámetros de las consultas preparadas comienzan en 1, no en 0. Por lo tanto, si estás intentando acceder al primer parámetro de tu consulta, deberías hacer algo como preparedStatement.setInt(1, valor); en lugar de preparedStatement.setInt(0, valor);.

El error se encuentra en la línea ProductoController.eliminar(ProductoController.java:46). Te recomendaría revisar esta parte de tu código y asegurarte de que los índices de los parámetros estén configurados correctamente.

Por ejemplo, si tu consulta es algo como DELETE FROM productos WHERE id = ?, entonces deberías configurar el parámetro de la siguiente manera:

PreparedStatement preparedStatement = conexion.prepareStatement("DELETE FROM productos WHERE id = ?");
preparedStatement.setInt(1, idProducto);

Espero que esta información te sea útil para resolver el problema. Si el error persiste, podría ser útil revisar otras partes de tu código para asegurarte de que estás gestionando correctamente las transacciones y los errores.

Mucho éxito en todo lo que te propongas y si tienes más duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios.