Java - Duda DAO

 
Vista:
sin imagen de perfil
Val: 20
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Duda DAO

Publicado por Cristina (25 intervenciones) el 13/02/2020 16:55:49
Buenas tardes al realizar el sigueinte DAO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Override
public List<Productos_almacenes> getAllAlmacenes1BajoStock() throws Exception {
    List<Productos_almacenes>productos_almacenes= new ArrayList();
    Productos_almacenes producto_almacen= null;
    try{
        this.openConnection();
        String sql = "SELECT `ID_almacen1`,COUNT(`ID_producto`),COUNT(`Stock`) FROM `productos-almacenes` WHERE `Stock`<5 group by `ID_almacen1`";
        Statement stm = con.createStatement();
        ResultSet rs= stm.executeQuery(sql);
 
        while(rs.next()){
            producto_almacen= new Productos_almacenes(
 
                    rs.getInt("ID_almacen1"),
                     rs.getInt("ID_producto"),
                    rs.getInt("Stock")
 
 
 
            );
            productos_almacenes.add(producto_almacen);
        }
        this.closeConnection();
 
    } catch (Exception e) {
        e.printStackTrace();
        throw new Exception ("Error al recuperar la lista de almacenes, llame al CPD");
 
    }
    return productos_almacenes;
 
}

Me da un error, que esta localizado en el String sql (la consulta), pero al probar esa consulta en PHPMyAdmin funciona perfectamnte, alguien sabria decirme porque? gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Duda DAO

Publicado por Lawliet (303 intervenciones) el 13/02/2020 17:26:52
Hola!!!

Serías tan amable de publicar el error que te manda la excepción ya que a simple vista todo se ve bien, lo único que se me ocurre es que no tengas los drivers de conexión a MySQL.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos! :3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 20
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Duda DAO

Publicado por Cristina (8 intervenciones) el 13/02/2020 17:39:49
Este DAO lo implemento en un servlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    try{
    Productos_almacenesManager pam= new Productos_almacenesManager();
    List<Productos_almacenes>productos_almacenes=pam.getAllAlmacenes1BajoStock();
    request.setAttribute("productos_almacenes", productos_almacenes);
    hacerForward("/listadoStock.jsp", request, response);
 
 
    }catch(Exception e){
   hacerForward("/error.jsp", request, response);
    }
}
private void hacerForward(String target, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(target);
    dispatcher.forward(request, response);
}


Ese mismo DAO, con la siguiente consulta:

1
String sql = "SELECT `ID_almacen1`,`ID_producto`,`Stock` FROM `productos-almacenes` WHERE `Stock`<5 ORDER BY `ID_almacen1`";

Me funciona perfectamente al llamar al servlet, sin embargo si le pongo la otra consulta:

1
String sql = "SELECT `ID_almacen1`,COUNT(`ID_producto`),COUNT(`Stock`) FROM `productos-almacenes` WHERE `Stock`<5 group by `ID_almacen1`";

Me redirecciona a error.jsp

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Duda DAO

Publicado por Lawliet (303 intervenciones) el 13/02/2020 17:51:28
Hola!!!

Recuerda que todos los elementos que pones en tu consulta deben ser mapeados al momento de recorrer tu ResultSet; es decir, si en tu consulta tienes un campo llamado id_producto cuando recuperes el elemento en tu ResultSet debes llamar a ese mismo campo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Override
public List<Productos_almacenes> getAllAlmacenes1BajoStock() throws Exception {
	List<Productos_almacenes> productos_almacenes = new ArrayList();
	Productos_almacenes producto_almacen = null;
 
	try{
		this.openConnection();
		String sql = "SELECT `ID_almacen1`,COUNT(`ID_producto`) AS ID_producto,COUNT(`Stock`) AS Stock FROM `productos-almacenes` WHERE `Stock`<5 group by `ID_almacen1`";
		Statement stm = con.createStatement();
		ResultSet rs = stm.executeQuery(sql);
 
	while(rs.next()){
		producto_almacen= new Productos_almacenes(rs.getInt("ID_almacen1"), rs.getInt("ID_producto"), rs.getInt("Stock"));
		productos_almacenes.add(producto_almacen);
	}
 
	this.closeConnection();
 
	} catch (Exception e) {
		e.printStackTrace();
		throw new Exception ("Error al recuperar la lista de almacenes, llame al CPD");
	}
 
	return productos_almacenes;
}

En tu consulta agregue un alías al COUNT de cada campo para recuperarlo en tu ResultSet.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos! :3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar