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

Ayuda : No me genera el reporte

Al momento de generar el reporte me sale este mensaje :

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException at com.alura.jdbc.dao.ProductoDAO.listar(ProductoDAO.java:167) at com.alura.jdbc.controller.ProductoController.listar(ProductoController.java:41) at com.alura.jdbc.view.ReporteFrame.lambda$0(ReporteFrame.java:54) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at com.alura.jdbc.view.ReporteFrame.cargaReporte(ReporteFrame.java:51) at com.alura.jdbc.view.ReporteFrame.(ReporteFrame.java:41) 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)

1 respuesta

Hola Pool,

Por el error que compartiste, parece que hay un problema en la línea 167 de tu archivo ProductoDAO.java. La excepción java.lang.RuntimeException es muy general y puede ser lanzada por muchas razones diferentes. Sin embargo, basándome en el contexto de tu pregunta, podría ser que estás intentando acceder a un objeto o recurso que no está disponible o no existe.

Una posible solución sería revisar tu método listar en la clase ProductoDAO. Asegúrate de que estás gestionando correctamente la conexión a la base de datos y que estás realizando las consultas correctamente. También podría ser útil comprobar si estás cerrando correctamente tus recursos (como las conexiones a la base de datos) después de usarlos.

Por ejemplo, tu método listar podría verse algo así:

public List<Producto> listar() {
    List<Producto> productos = new ArrayList<>();
    try (Connection con = ConnectionFactory.obtenerConexion();
         PreparedStatement ps = con.prepareStatement("SELECT * FROM productos")) {
        try (ResultSet rs = ps.executeQuery()) {
            while (rs.next()) {
                Producto producto = new Producto();
                // establecer los valores del producto a partir del ResultSet
                productos.add(producto);
            }
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
    return productos;
}

En este ejemplo, estoy usando un bloque try-with-resources para asegurarme de que los recursos se cierren automáticamente después de usarlos. También estoy capturando cualquier excepción SQLException que pueda ocurrir y la envuelvo en una RuntimeException.

Espero que esta información te sea útil. Por favor, revisa tu código y asegúrate de que estás gestionando tus recursos correctamente.

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.