Java - Se repiten los valores de un arraylist

   
Vista:
Imágen de perfil de Miguel Piña

Se repiten los valores de un arraylist

Publicado por Miguel Piña (3 intervenciones) el 19/05/2016 22:33:10
Hola a todos, 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:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 , agradezco su ayuda.
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

Se repiten los valores de un arraylist

Publicado por Maverick (96 intervenciones) el 19/05/2016 23:37:01
Hola Miguel,

Sugiero que debes siempre generar un nuevo objeto dentro de tu while porque sino sobre un mismo objeto estas trabajando, agrega la siguiente linea:

while (rs.next()) {
int i=0;
dtsGe = new MyClase(); // En esta linea generas el objeto
dtsGe.setCodigo(rs.getString("codigo"));
...
...
...

Por otro lado cuando agregas el objeto a la lista sugiero no indicar el indice. Cambia la siguiente linea:

lista.add(i,dtsGe);

Por esta linea

lista.add(dtsGe);

Realiza los cambios sugeridos y me avisas como te fue. Cualquier cosa me puedes escribir a: oscardelphi@gmail.com

Saludos

Maverick
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Miguel Piña

Se repiten los valores de un arraylist

Publicado por Miguel Piña (3 intervenciones) el 19/05/2016 23:40:56
Muchas gracias por responder... estuve toda la tarde y la solución estaba frente de mí jajaja muchas gracias amigo , y yo lo tenía sin indice, lo puse así para seguir testeando pero ya lo cambio... gracias de nuevo ^- ^
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