0

Al compilar mi app de consulta de base de datos me sale este error:

Exception in thread "main" java.lang.NullPointerException at co.edu.utp.misiontic2022.c2.model.dao.PagadoPorProyectoDao.listarPagadoPorProyecto(PagadoPorProyectoDao.java:33) at co.edu.utp.misiontic2022.c2.controller.ReportesController.listarPagadoPorProyecto(ReportesController.java:30) at co.edu.utp.misiontic2022.c2.view.ReportesView.totalPagadoPorProyectosSuperioresALimite(ReportesView.java:51) at co.edu.utp.misiontic2022.c2.App.main(App.java:16)

Este es mi dao dice que en la linea 33 hay error:

public List<PagadoPorProyectoVo> listarPagadoPorProyecto(Double limiteInteferior) throws SQLException {
        List<PagadoPorProyectoVo> respuesta = new ArrayList<>();
        var conn = JDBCUtilities.getConnection();
        PreparedStatement stmt = null;
        ResultSet rset = null;
        try {
            var query = "SELECT p.ID_Proyecto, SUM(c.Cantidad*mc.Precio_Unidad) AS VALOR"
            + " FROM Proyecto p"
            + " INNER JOIN Compra c ON c.ID_Proyecto = p.ID_Proyecto "
            + " INNER JOIN MaterialConstruccion mc ON mc.ID_MaterialConstruccion = c.ID_MaterialConstruccion"
            + " WHERE c.Pagado = (?)"
            + " GROUP BY p.ID_Proyecto"
            + " HAVING SUM(c.Cantidad*mc.Precio_Unidad) > 50000"
            + " ORDER BY VALOR DESC;";

            stmt = conn.prepareStatement(query);
      33--> stmt.setDouble(1, limiteInferior);
            rset = stmt.executeQuery();
            while (rset.next()) {
                var vo = new PagadoPorProyectoVo();
                vo.setID_Proyecto(rset.getString("ID_Proyecto"));
                vo.setVALOR(rset.getInt("VALOR"));
                
                respuesta.add(vo);
            }
        } finally {
            if(rset != null) {
                rset.close();
            }
            if(stmt != null) {
                stmt.close();
            }
            if(conn != null) {
                conn.close();
            }
        }

        return respuesta;


Este es el metodo del reportes controller al que hace referencia el error:

 public List<PagadoPorProyectoVo> listarPagadoPorProyecto(Double limiteInferior) throws SQLException {
        return pagadoPorProyectoDao.listarPagadoPorProyecto(limiteInferior);
    }

Este es el metodo del view donde tambien hay una error: linea 51

public void totalPagadoPorProyectosSuperioresALimite(Double limiteInferior) {
        try {
            System.out.println(repitaCaracter('=', 1) + " TOTAL PAGADO POR PROYECTO "
        + repitaCaracter('=', 1));
        System.out.println(String.format("%3s %15s", "ID", "VALOR "));
        System.out.println(repitaCaracter('-', 29));

   51-->var lista = reportesController.listarPagadoPorProyecto(limiteInferior);
        for (PagadoPorProyectoVo pagado : lista) {
            System.out.printf("%3s %15s %n", pagado.getID_Proyecto(), pagado.getVALOR());
        }
    } catch (SQLException e) {
        System.err.println("Error: " + e.getMessage());
        e.printStackTrace();
    }   


Aparentemente no hay error alguno de sintaxis pero la pregunta es como debo solucionar el error del hilo del main? Auxilio!
Nataly
  • 1
  • ¿Responde esto a tu pregunta? [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) – padaleiana Aug 13 '21 at 18:19

0 Answers0