2
respuestas

No genera reporte

¡Saludos! Realizando el procedimiento con el profesor, al momento de solicitar el reporte al programa me sale el siguiente error:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 1' at line 1 at com.alura.jdbc.dao.ProductoDAO.listar(ProductoDAO.java:176) at com.alura.jdbc.controller.ProductoController.listar(ProductoController.java:45) at com.alura.jdbc.view.ReporteFrame.lambda$0(ReporteFrame.java:55) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at com.alura.jdbc.view.ReporteFrame.cargaReporte(ReporteFrame.java:52) at com.alura.jdbc.view.ReporteFrame.(ReporteFrame.java:42) at com.alura.jdbc.view.ControlDeStockFrame.abrirReporte(ControlDeStockFrame.java:170) at com.alura.jdbc.view.ControlDeStockFrame$5.actionPerformed(ControlDeStockFrame.java:164) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407) 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:6620) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398) at java.desktop/java.awt.Component.processEvent(Component.java:6385) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4995) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4827) 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:4827) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744) 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.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 1' at line 1 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:370) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:67) at com.alura.jdbc.dao.ProductoDAO.listar(ProductoDAO.java:158) ... 42 more

![Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad](https://cdn1.gnarususercontent.com.br/6/558955/94e532b1-cae6-449e-8611-86dd5addc993.png)  
2 respuestas

Continuando la clase y siguiendo los pasos del profesor, más adelante se sacan los comandos de MySQL como variables. Reiniciando el programa, de esta manera si funciona. ¿Por qué sucede esto?

¡Hola!

El error indica que hay un problema con la sintaxis de tu consulta SQL. El error dice: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 1' at line 1". Esto significa que hay un error cerca de '= 1' en tu consulta.

La consulta SQL debería ser algo como "SELECT * FROM PRODUCTO WHERE CATEGORIA_ID = ?", donde "?" es el ID de la categoría que estás buscando.

El programa funciona después de sacar los comandos de MySQL como variables, es probable que al hacer esto se corrigió el problema de sintaxis en la consulta SQL. Aunque no proporcionaste el código exacto, puedo ofrecerte algunas razones por las que esto podría haber sucedido:

Formato incorrecto de las variables: Si estabas utilizando variables para componer la consulta SQL y no se estaban formateando correctamente, podrían haber causado un error de sintaxis. Al definir los comandos directamente como cadenas, podrías haber evitado este problema.

Interpolación incorrecta de variables: Si estabas interpolando las variables en la cadena de consulta SQL de manera incorrecta, podrían haber causado un error de sintaxis. Al definir los comandos directamente, se omite la interpolación y se evita el problema.

Escapado de caracteres especiales: Si las variables contenían caracteres especiales que no se escaparon adecuadamente en la consulta SQL, podría haber generado un error de sintaxis. Al definir los comandos directamente, podrías haber asegurado que los caracteres se manejen correctamente.

Error en la concatenación de cadenas: Si estabas concatenando las partes de la consulta SQL de manera incorrecta, podrías haber generado una consulta SQL mal formada. Al definir los comandos directamente, se elimina la posibilidad de errores de concatenación.

Espero haber ayudado y buenos estudios! Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

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