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

Duda en Result Set

Estas en el tema de Duda en Result Set en el foro de Java en Foros del Web. Que tal, necesito sacar la informacion de una tabla, que puede tener cero, uno o mas registros. El problema es que algo estoy haciendo mal ...
  #1 (permalink)  
Antiguo 09/04/2012, 22:58
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta Duda en Result Set

Que tal,

necesito sacar la informacion de una tabla, que puede tener cero, uno o mas registros. El problema es que algo estoy haciendo mal en el result set, por que diario nada mas consigo traerme solo la 1er fila y no las demas. He intentado de varias maneras, aqui dos ejemplos:

Código:
public List<String> obtenerSucursal(){

		List<String> items = new ArrayList<String>();
		int i = 0;

		try {
				Statement st = adaptador.createStatement();
				ResultSet rs = st.executeQuery("SELECT id, nombre FROM servicio_v2.sucursal");
				while (rs.next()){
					items.add(0, rs.getString(1));
					items.add(1, rs.getString(2));
					rs.close();
					st.close();
					//i++;
					return items;
				}
				return items;

		} catch (SQLException e) {
			e.printStackTrace(System.out);
			return items;
		}

	}
Código:
public List<String> obtenerSucursal(){

		List<String> items = new ArrayList<String>();
		int i = 0;
		int j = 1;

		try {
				Statement st = adaptador.createStatement();
				ResultSet rs = st.executeQuery("SELECT id_sucursal, nombre FROM servicio_v2.sucursal");

				while (rs.next()){
					items.add(i, rs.getString(1));
					items.add(i+1, rs.getString(2));
					System.out.println("ITEM "+ i+ ":" + items.get(i));
					i++;
				}
				return items;

		} catch (SQLException e) {
			e.printStackTrace(System.out);
			System.out.println("Error Cliente encontrado");
			return items;
		}

	}
Alguna recomendacion? es la lista la mejor estructura para guardar una consulta asi? es el tipo de result set que utilizo la mejor manera?

Gracias y saludos
  #2 (permalink)  
Antiguo 09/04/2012, 23:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 7 años, 11 meses
Puntos: 34
Respuesta: Duda en Result Set

En el primero estas cerrando los recursos antes de tiempo y tanto en el primero como en el segundo estas agregando mal los elementos a la lista.

Ya corregido:
Código:
public List<String> obtenerSucursal(){
		List<String> items = new ArrayList<String>();
		try {
				Statement st = adaptador.createStatement();
				ResultSet rs = st.executeQuery("SELECT id, nombre FROM servicio_v2.sucursal");
				while (rs.next()){
					items.add(rs.getString(2));
				}
                                rs.close();
			        st.close();
				return items;
		} catch (SQLException e) {
			e.printStackTrace(System.out);
		}
        return null;
	}
PD: Solo corregi lo que pediste pero tiene mas errores, como por ejemplo es recomendable cerrar los recursos en el bloque finally.
  #3 (permalink)  
Antiguo 10/04/2012, 19:51
 
Fecha de Ingreso: marzo-2012
Mensajes: 9
Antigüedad: 7 años, 7 meses
Puntos: 1
Respuesta: Duda en Result Set

Asi que un poco mas ordenado:

Código:
	public ArrayList<String> obtenerSucursal(){

		ArrayList<String> items = new ArrayList<String>();

		try {
				Statement st = adaptador.createStatement();
				ResultSet rs = st.executeQuery("SELECT id, nombre FROM servicio_v2.sucursal");
			
				while (rs.next()){	
					
					items.add(rs.getString(1));
					items.add(rs.getString(2));					
				}
								
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{						
			closeConections();
		}
		return items;
	}
	
	
	private void closeConections() {
		try {
			if(rs != null){
				rs.close();
			}
			if(ps != null){
				ps.close();
			}
											
		} catch (SQLException e) {

			e.printStackTrace();
		}
	}
Ahora seria mejor que tuvieras tus clases 'pojo', o llamadas también 'getters y setters', para iterar de un forma mas comprensiva tu Arraylist, por ejemplo:

Arraylist<Persona> lista = new Arraylist<Persona>();

saludos....
  #4 (permalink)  
Antiguo 15/04/2012, 12:36
 
Fecha de Ingreso: enero-2010
Mensajes: 46
Antigüedad: 9 años, 9 meses
Puntos: 0
Resuelto: Duda en Result Set

Que tal,

gracias por sus respuestas, sinceramente seguian solo trayendome una sola fila de mi consulta y no todas.

Lo resolvi creando una clase del tipo Sucursal:

Código:
public class Sucursal{
	private String id_;
	private String nombre_;

	public String getID() {
		return this.id_;
	}
	public void setID(String unID){
		this.id_ = unID;
	}

	public String getNombre() {
		return this.nombre_;
	}
	public void setNombre(String unNombre){
		this.nombre_ = unNombre;
	}


}
Con esto me puede traer todas las filas, muchas gracias

Saludos

Etiquetas: result, set
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 11:08.