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

Alguna forma de optimizar esta consulta

Estas en el tema de Alguna forma de optimizar esta consulta en el foro de Java en Foros del Web. Que tal amigos, tengo el siguiente codigo para recuperar registros de una base de datos Código: public ArrayList<String> traerDatos(Sql consulta) { Statement st; ResultSet rs; ...
  #1 (permalink)  
Antiguo 30/12/2009, 11:51
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Alguna forma de optimizar esta consulta

Que tal amigos, tengo el siguiente codigo para recuperar registros de una base de datos
Código:
public ArrayList<String> traerDatos(Sql consulta)
    {
        Statement st;
        ResultSet rs;
        int tamano, i;
        ArrayList<String> resultado = new ArrayList<String>();

        try {
            st = this.conexion.createStatement();
            System.out.println(consulta.generar());
            rs = st.executeQuery(consulta.generar());
            //getMetaData se usa para determinar cuantas columnas tiene el ResultSet, las columnas son el numero de campos
            ResultSetMetaData rsmd = rs.getMetaData();
            tamano = rsmd.getColumnCount();
            while(rs.next()){
                for (i=1; i<=tamano; i++){
                    //Cada campo del ResultSet se guarda en un ArrayList (resultado), el cual será retornado.
                    resultado.add(rs.getString(i));
                }
                //Al final de cada registro se ingresa el "-" para separlo de los demas registros.
                resultado.add("-");
            }
        }catch (SQLException ex) {
            ex.printStackTrace();
        }
        return resultado;
    }
Lo hice de esta manera porque no se como manipular las consultas en java para que cada registro sea una fila. Este codigo va agregando el resultado de una consulta a un ArrayList y separa cada registro por un guion. La cuestion es que ahora necesito mejorar este codigo porque me va a complicar mucho la vida y me gustaria que por favor me ayudaran, como veran soy nuevo en java, no en POO pero si en java.
Lo que busco es la manera de recorrer una consulta donde esten definidos los registros y poder posicionarme en cualquier lugar

Saludos y gracias.
  #2 (permalink)  
Antiguo 30/12/2009, 17:32
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Alguna forma de optimizar esta consulta

Por q mejor no haces una clase (bean) que tenga como propiedades los campos de la consulta y creas un ArrayList de esa clase y lo que guardarias son clases donde cada una seria un registro
Saludos
  #3 (permalink)  
Antiguo 04/01/2010, 10:17
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Alguna forma de optimizar esta consulta

Puedes recuperar cada uno de los elementos por separado en el resulset, para ello, en cada fila, tienes ejemplos a seguir de tipo:
while (resultSet.next()) {
...
long codigo = resultSet.getLong("CODIGO");
objetoDeTuAplicacionQueGuardaEstosDatos.setCodigo( codigo);
String desc = resultSet.getString("DESCRIPCION");
objetoDeTuAplicacionQueGuardaEstosDatos.setDescrip cion(desc);
...
coleccionDeObjetos.add(objetoDeTuAplicacionQueGuar daEstosDatos);
... }

y luego investiga sobre el DisplayTag y el tag display:table para jsp, y ahi vuelcas los datos de la colección de objetos que has obtenido separando por columnas.
  #4 (permalink)  
Antiguo 05/01/2010, 20:59
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Ubicación: por ahi!!!
Mensajes: 113
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Alguna forma de optimizar esta consulta

fijate que hay frameworks de persistencia que son muy faciles de entender y resolves este tipo de consultas y acciones basicas en pocos pasos.
ibatis es un ejemplo de esto.
http://ibatis.apache.org/java.cgi
sino tenes un poco mas complicado
https://www.hibernate.org/
hay plugins que hacen reingenieria para el mapeo aunque por lo general no son de fiar, pero
bueno hacen mapeos sencillos y despues los corregis aunque podemos decir q es una muy mala practica y en pocos casos se justifican.
  #5 (permalink)  
Antiguo 06/01/2010, 08:01
Avatar de juamd  
Fecha de Ingreso: marzo-2009
Ubicación: Bogotá
Mensajes: 285
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Alguna forma de optimizar esta consulta

Gracias por las sugerencias. Las voy a estudiar.
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 17:19.