[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