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

[SOLUCIONADO] Problema al crear un arraylist de objetos leyendo de una base de datos

Estas en el tema de Problema al crear un arraylist de objetos leyendo de una base de datos en el foro de Java en Foros del Web. Mi problema es el siguiente: - Tengo un arraylist de structuras de tipo Pieza (clase creada por mi), tengo un bucle while que me va ...
  #1 (permalink)  
Antiguo 16/06/2013, 06:16
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 7 meses
Puntos: 0
Problema al crear un arraylist de objetos leyendo de una base de datos

Mi problema es el siguiente:

- Tengo un arraylist de structuras de tipo Pieza (clase creada por mi), tengo un bucle while que me va leyendo de una base de datos y colocando los elementos en cada campo de la clase pieza y posteriormente me añade cada clase pieza (una vez todos sus campos estan leidos) en el arraylist, usando el debug he visto mi problema es que al añadir cada pieza al arraylist no solo lo añade si no que sobreescribe todos los valores anteriormente añadidos con el pieza actual, es decir mi arraylist en cada vuelta del bucle deberia ser algo asi:

Pieza1
Pieza1 Pieza2
Pieza1 Pieza2 Pieza3
Pieza1 Pieza2 Pieza3 Pieza4

Y lo que en realidad ocurre es esto:

Pieza1
Pieza2 Pieza2
Pieza3 Pieza3 Pieza3
Pieza4 Pieza4 Pieza4 Pieza4

Por si ayuda aqui dejo el fragmento de codigo del problema con sus respectivas variables:

Código:
		ResultSet rs;
		String tFecha;
		int tNumPieza;
		String tCara;
		String tTratamiento;
		Pieza piezaVO = new Pieza();
		List<Pieza> ListaPiezas = new ArrayList<Pieza>();
Código:
		while (rs.next()) {
			tNumPieza = rs.getInt("NumPieza");
			piezaVO.setNumPieza(tNumPieza);
			System.out.println(piezaVO.getNumPieza());
			tCara = rs.getString("Cara");
			piezaVO.setCara(tCara);
			System.out.println(piezaVO.getCara());			
			tTratamiento = rs.getString("Tratamiento");
			piezaVO.setTratamiento(tTratamiento);
			System.out.println(piezaVO.getTratamiento());			
			tFecha = rs.getString("Fecha");
			piezaVO.setFecha(tFecha);
			System.out.println(piezaVO.getFecha());
			
			System.out.println("AÑADIR REGISTRO");
			ListaPiezas.add(piezaVO);

			for(int i=0; i<ListaPiezas.size(); i++){
	                System.out.println(ListaPiezas.get(i).getFecha());
	                System.out.println(ListaPiezas.get(i).getNumPieza());
	                System.out.println(ListaPiezas.get(i).getCara());
	                System.out.println(ListaPiezas.get(i).getTratamiento());
	                System.out.println(i);
			}
		}
Recuerdo que las lecturas y adiciones de la base de datos se hacen correctamente (está comprobado por eso tengo tantos out printin), es solo que al añadir un objeto pieza me sobreescribe tambien los anteriores y no entiendo el porque, se que tiene que ser algun fallo estupido pero no soy capaz de dar con el, un saludo y gracias ^^
  #2 (permalink)  
Antiguo 16/06/2013, 13:34
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Problema al crear un arraylist de objetos leyendo de una base de datos

Intenta lo siguiente:
Código Java:
Ver original
  1. while (rs.next()) {
  2.                         piezaVo = new Pieza();
  3.             tNumPieza = rs.getInt("NumPieza");
  4.             piezaVO.setNumPieza(tNumPieza);
  5.             System.out.println(piezaVO.getNumPieza());
  6.             tCara = rs.getString("Cara");
  7.             piezaVO.setCara(tCara);
  8.             System.out.println(piezaVO.getCara());         
  9.             tTratamiento = rs.getString("Tratamiento");
  10.             piezaVO.setTratamiento(tTratamiento);
  11.             System.out.println(piezaVO.getTratamiento());          
  12.             tFecha = rs.getString("Fecha");
  13.             piezaVO.setFecha(tFecha);
  14.             System.out.println(piezaVO.getFecha());
  15.            
  16.             System.out.println("AÑADIR REGISTRO");
  17.             ListaPiezas.add(piezaVO);
  18.  
  19.             for(int i=0; i<ListaPiezas.size(); i++){
  20.                     System.out.println(ListaPiezas.get(i).getFecha());
  21.                     System.out.println(ListaPiezas.get(i).getNumPieza());
  22.                     System.out.println(ListaPiezas.get(i).getCara());
  23.                     System.out.println(ListaPiezas.get(i).getTratamiento());
  24.                     System.out.println(i);
  25.             }
  #3 (permalink)  
Antiguo 16/06/2013, 18:29
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema al crear un arraylist de objetos leyendo de una base de datos

Problema solucionado! muchisimas gracias! si me pudieras decir que es lo que estaba haciendo mal al no inicializar ahi si no en la declaracion te lo agradecería
  #4 (permalink)  
Antiguo 16/06/2013, 19:09
 
Fecha de Ingreso: mayo-2013
Ubicación: Córdoba
Mensajes: 139
Antigüedad: 11 años, 7 meses
Puntos: 9
Respuesta: Problema al crear un arraylist de objetos leyendo de una base de datos

Por cada ciclo del bucle, vas a tener que agregar un nuevo objeto, por eso tienes que crear un nuevo objeto, sino lo que haces es que en cada ciclo le cambias el contenido del objeto y lo agregas al array.
  #5 (permalink)  
Antiguo 16/06/2013, 19:47
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Problema al crear un arraylist de objetos leyendo de una base de datos

Vale todo claro, muchisimas gracias! :)

Etiquetas: arraylist, clase, leyendo, objetos, string
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 19:09.