[Gvsig_desarrolladores] Fallos al hacer una consulta para obtener los datos de una base de datos postgis desde gvsig

marta vicente romero mviceromgvsig en gmail.com
Vie Feb 6 13:35:27 CET 2009


Hola a todos:

Tengo un codigo que no me acaba de funcionar, y no entiendo por que ...

me he conseguido conectar correctamente a una base de datos
incluso puedo sacar todos los datos de la tabla con:

//Codigo que funciona correctamente:
FLayer lyr =  LayerFactory.createDBLayer(dbDriver, nombreTabla, proj);

    SelectableDataSource dataSource;
    AlphanumericData co = (AlphanumericData)lyr;
    dataSource= co.getRecordset();
    //Recorrer el datasource deberia de ser suficiente
    System.out.println("OUT: tenemos el datasource");

    //recorrer el datasource

    try {
        for (int j=0 ; j<dataSource.getRowCount() ; j++){
              for (int k=0 ; k<dataSource.getFieldCount() ; k++){
                  System.out.print(dataSource.getFieldName(k) + "=");
                  System.out.println(dataSource.getFieldValue(j, k));

                  }
              }
    } catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
        System.out.println("OUT: Hello world datasource");
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

El problema lo tengo cuando intento obtener el resultado de una consulta

(para todas las que tienen datos geograficos y las que no,por lo que no me
hace falta un FLayer, no?..)
Por el diseño que voy a hacer de mi ampliacion de gvsig:
Lo que uqiero es crear un objeto java por cada tabla (mas o menos..)
 sacar los datos a los campos de la tabla para luego llamar a estos objetos
desde el interfaz
y obtener asi los datos de la tabla para meterlos o sacarlos de formularios
que yo voy a implementar para las capas que tengo en gvsig

El codigo que no me funciona es esta prueba que hice:

ResultSet conjuntoResultados;
 Statement stmt;

    String conusltasql="SELECT nombre FROM pozo2d WHERE gidpozo=1";

     try {//este lo proboca el statement asi que supongo que metemos todo
dentro
         //hasta que se cierre

         stmt= conexion.createStatement();
        conjuntoResultados = stmt.executeQuery(conusltasql);
         System.out.println("OUT:Se ha llegado hasta Obtener pozo");

         ResultSetMetaData rsmd = conjuntoResultados.getMetaData();
          int numberOfColumns = rsmd.getColumnCount();
          System.out.println("OUT:numero de columnas"+ numberOfColumns);

         while (conjuntoResultados.next()) {
             System.out.println("OUT: entramos en el while para resulset");
             String s= conjuntoResultados.getString(1);//damos el numero de
la columna
             System.out.print("OUT: Muestra el primer dato del data set:"
+s);
             //Comprobar si funciona el metodo uqe le pasas el nombre de la
columna:
             String nombre= conjuntoResultados.getString("nombre");

             for (int i = 1; i<=numberOfColumns; i++) {
                  System.out.print("OUT:Entra en el for tambien");
                  s = conjuntoResultados.getString(i);
                  System.out.print(s + "  ");
                }

         }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Lo que pasa con este codigo es que el ResultSet esta vacio...
tiene algo que ver con que sea postgis...
debo de utilizar un ResultSet?
o es mejor otro objeto?
Como puedo comprobar que si el fallo esta en la consulta o en el Statement?
Alguien puede darme una pista o alguna solucion alternativa?


muchisimas gracias
Saludos
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20090206/fa0f6d8a/attachment.htm


Más información sobre la lista de distribución gvSIG_desarrolladores