Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Xedrox en 10 Julio 2011, 07:19 am



Título: El conjunto de resultados esta cerrado :S
Publicado por: Xedrox en 10 Julio 2011, 07:19 am
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???

Código:
    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!


Título: Re: El conjunto de resultados esta cerrado :S
Publicado por: Valkyr en 10 Julio 2011, 14:00 pm
El problema está en que usas dos veces el mismo Statement para dos consultas diferentes. Tendrías que realizarlo de esta forma:

Código
  1. Statement st=con.createStatement();
  2.            ResultSet cant=st.executeQuery("select count(*) from proveedores");
  3.  
  4.            cant.next();
  5.  
  6.            int cantidad_filas=cant.getInt(1);
  7.            aux=new String[cantidad_filas];
  8.  
  9.            ResultSet rs=st.executeQuery("select cod_proveedor from proveedores");
  10.  
  11.            while(rs.next())  //EN ESTA LINEA DA EL ERRROR
  12.            {
  13.                aux[i]=rs.getString(1);  //OH EN ESTA LINEA
  14.                i++;
  15.            }
  16.  
  17.            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.


Título: Re: El conjunto de resultados esta cerrado :S
Publicado por: Xedrox en 10 Julio 2011, 17:21 pm
Ok muchas gracias!