style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Duda con JSP

Que tal,

Tengo el siguiente problema que no he podido resolver, espero me puedan apoyar,quiza sea algo sencillo pero ya le di muchas vueltas y no llego a nada.

   public static LinkedList <Abonos> getObtenerReporte( String p1, String p2, String p3, String p4) throws ClassNotFoundException, SQLException, IOException {
 
    String dato="";
   
 //manejo 2 conexiones diferentes hacia  2 bases que tengo en mi SQL Server

  Connnection cn;
  Connnection cn2;
  Conexión con = new Conexion();
  cn = con.conectarBase();
  cn2 = con.conectarBaseOtra();

        //Creo mis variables de conexión
       
        //Primera Conexion
        PreparedStatement cmd = null;
        Statement st = null;
        ResultSet rs = null;

        //Segunda Conexion
        PreparedStatement cmd2 = null;
        Statement st2 = null;
        ResultSet rs2 = null;

       //Creo una lista para almacenar los resultados de mis consultas        
        LinkedList<Abonos> ListaFinal = new LinkedList<Abonos>();

        Abonos ab = new Abonos();
        Abonos ab2 = new Abonos();

     try {
            sql =  "Select campo1,campo2 campo2 from tabla where campo1=? and campo2 =?";

            cmd = cn.prepareStatement(sql);
            cmd.setString(1, p1);
            cmd.setString(2, p2);
            st = cn.createStatement();
            rs = cmd.executeQuery();

            //Si hay datos obtengo el primero y lo almaceno en mi lista
            while (rs.next()) {
                dato = rs.getString("campo1");
                ab.setDato(dato);
                ListaFinal.add(ab);

            try {    
                //Creamos otra consulta para que por cada dato que encuentre en la primera lo busque en esta siguiente consulta
               // se lo paso como parametro
                sql1 = "SELECT    datos1, datos2"
                        + "  FROM  tabla"
                        + "  WHERE     (campo =?)";

                cmd2 = cn2.prepareStatement(sql1);
                cmd2.setString(1,dato);
                st2 = cn2.createStatement();
                rs2 = cmd2.executeQuery();

                 //Si encuentro registro de ese dato que estoy pasando como parámetro
                    while (rs2.next()) {
                        ab2.setFecha(rs2.getDate("datos1"));                        
                        ListaFinal.add(ab2);
                    }
                } catch (Exception ex) {
                    System.out.println("Error:" + ex.getMessage());
                } finally {
                    if (rs2 != null) {
                        rs2.close();
                    }
                    rs2 = null;
                    if (cmd2 != null) {
                        cmd2.close();
                    }
                    cmd2 = null;
                    cn2.close();
                }

            }
            System.out.println(ListaFinal.size());
        } catch (Exception ex) {
            System.out.println("Error achis :" + ex.getMessage());
        } finally {
            cn.close();
            cmd.close();
            st.close();
        }
        return ListaFinal;
    }
   
El problema que tengo es que me dice que la conexion se cierra antes de que se pase el otro dato

Alguien me podria indicar que estoy haciendo mal, espero haberme explicado

Gracias

 
 

}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

La conexión

La conexión cn2 la estás cerrando (cn2.close() ) dentro de un finally que está en el ciclo while (rs.next()) ... puedes abrir otra vez la conexión cada iteración del while, aunque lo mejor sería cerrarla afuera del ciclo.

Creo que es eso me confundí un poco por la indentación.

Imagen de CesarAlducin

Muchas gracias efectivamente

Muchas gracias efectivamente ese es el problema, ya lo corregí y esta listo !!!!

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">