Foros del Web » Programación para mayores de 30 ;) » Java »

Se repiten los valores de un arraylist

Estas en el tema de Se repiten los valores de un arraylist en el foro de Java en Foros del Web. Bueno el problema es el siguiente; estoy haciendo un programa que tiene una base de datos y quiero hacer que regrese una consulta en una ...
  #1 (permalink)  
Antiguo 19/05/2016, 14:43
 
Fecha de Ingreso: mayo-2016
Ubicación: Venezuela
Mensajes: 1
Antigüedad: 8 años
Puntos: 0
Exclamación Se repiten los valores de un arraylist

Bueno el problema es el siguiente; estoy haciendo un programa que tiene una base de datos y quiero hacer que regrese una consulta en una lista hecha con una clase de acceso (getter y setter)... pero al momento de ver la lista que me regresa la función me regresa la cantidad de consultas pero todas tienen la misma información de la ultima consulta.

Este es el codigo:

Código:
try{ 
        if (reporte=='g'){

            try {
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(aSQL);

            while (rs.next()) {
             int i=0;

              dtsGe.setCodigo(rs.getString("codigo"));
              dtsGe.setDescripcion(rs.getString("descripcion"));
              dtsGe.setCategoria(rs.getString("categoria"));

              dtsGe.setCod_interno(rs.getString("codigo_interno"));
              dtsGe.setNota(rs.getString("nota"));

              dtsGe.setLote(rs.getInt("lote"));
              dtsGe.setF_vencimiento(rs.getDate("f_vencimiento")); 
              dtsGe.setF_entrada(rs.getDate("f_entrada"));
              dtsGe.setProveedor(rs.getString("proveedor"));
              dtsGe.setDoc_entrada(rs.getString("doc_entrada"));
              dtsGe.setF_entrada(rs.getDate("f_docentrada"));
              dtsGe.setPrec_compra(rs.getDouble("prec_compra"));

              dtsGe.setF_salida(rs.getDate("f_salida"));
              dtsGe.setCliente(rs.getString("cliente"));
              dtsGe.setDoc_salida(rs.getString("doc_salida"));
              dtsGe.setF_salida(rs.getDate("f_docsalida"));
              dtsGe.setPrec_venta(rs.getDouble("prec_venta"));

              dtsGe.setNom_envio(rs.getString("nom_envio"));
              dtsGe.setCod_guia(rs.getString("cod_guia"));
              dtsGe.setF_entrega(rs.getDate("f_entrega"));
              dtsGe.setF_aprobado(rs.getDate("f_aprobado"));
              dtsGe.setF_devolucion(rs.getDate("f_devolucion"));
              dtsGe.setF_garantia(rs.getDate("f_garantia"));
              dtsGe.setMotivo(rs.getString("motivo"));
              dtsGe.setNota2(rs.getString("nota2"));

              lista.add(i,dtsGe);
              System.out.println(lista.get(i).getCod_interno());
              i++;
            }

            System.out.println(lista.get(10).getCod_interno());
            return lista;

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
            return null;
        }
        }
En sí este es la parte interesante ya que el mismo problema se repite en métodos parecidos el primer Print me muestra todo los códigos únicos de los productos, ahí la lista está bien, pero en el segundo Print al querer ver el codigo de cualquier producto (en el ejemplo el 10) me sale solo el del ultimo...

No sé que estoy haciendo mal :C, agradezco su ayuda.
  #2 (permalink)  
Antiguo 19/05/2016, 18:12
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Se repiten los valores de un arraylist

Estás escribiendo siempre sobre el mismo objeto dtsge, dentro del bucle debes crear un objeto nuevo en cada iteración.

Deberías repasar variables y objetos.

http://www.aprenderaprogramar.es/ind...ero&Itemid=188
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:53.