El conjunto de resultados esta cerrado :S

Iniciado por Xedrox, 10 Julio 2011, 07:19 AM

0 Miembros y 1 Visitante están viendo este tema.

Xedrox

Hola gente, les hago una consulta, estoy creando un vector de string con unos codigos de una tabla, pero el me sale un mensaje de error diciendo "EL CONJUNTO DE RESULTADOS ESTA CERRADO" que podra ser???


   public String[] cargarProveedores(Connection con)
   {
       String aux[]=null;
       int i=0;

       try
       {
           Statement st=con.createStatement();
           ResultSet rs=st.executeQuery("select cod_proveedor from proveedores");
           ResultSet cant=st.executeQuery("select count(*) from proveedores");

           cant.next();

           int cantidad_filas=cant.getInt(1);
           aux=new String[cantidad_filas];

           while(rs.next())  //EN ESTA LINEA DA EL ERRROR
           {
               aux[i]=rs.getString(1);  //OH EN ESTA LINEA
               i++;
           }

           st.close();

       }
       catch(SQLException e)
       {
           JOptionPane.showMessageDialog(null,e.getMessage());
           System.out.println("ERORR CON CARGA DE PROVEEDORES!!!!");
       }

       return aux;

   }


Muchas Gracias
Saludos!

Valkyr

El problema está en que usas dos veces el mismo Statement para dos consultas diferentes. Tendrías que realizarlo de esta forma:

Código (java) [Seleccionar]

Statement st=con.createStatement();
            ResultSet cant=st.executeQuery("select count(*) from proveedores");

            cant.next();

            int cantidad_filas=cant.getInt(1);
            aux=new String[cantidad_filas];

            ResultSet rs=st.executeQuery("select cod_proveedor from proveedores");

            while(rs.next())  //EN ESTA LINEA DA EL ERRROR
            {
                aux[i]=rs.getString(1);  //OH EN ESTA LINEA
                i++;
            }

            st.close();


De esa forma, técnicamente debería funcionarte. Esto se debe a que cada vez que ejecutas una consulta el ResultSet anterior se pierde.

Saludos.

Xedrox