[Gvsig_desarrolladores] Consultas SQL sobre DBF

Francisco Puga fpuga en cartolab.es
Mar Abr 12 13:53:28 CEST 2011


Hola,

disculpad el mensaje anterior, me había obcecado.

Gracias a Nacho Varela llego a la solución.

Me faltaba el result.start() / stop.

Pego el código actualizado por si le vale a alguien.

SelectableDataSource comunidad = Utils.getFlyrVect(view,
"comunidad").getRecordset();
String sql = "select * from " + comunidad.getName() + ";";
comunidad.start();
DataSource result = comunidad.getDataSourceFactory().executeSQL(	sql,
DataSourceFactory.MANUAL_OPENING);
result.start(); // FALTABA
for (int i = 0; i < result.getRowCount(); i++) {
      for (int j = 0; j < result.getFieldCount(); j++) {
           Value a = result.getFieldValue(i, j);
      System.out.println(a.toString());
      }
}
result.stop(); // FALTABA
comunidad.stop();

El día 12 de abril de 2011 13:30, Francisco Puga <fpuga en cartolab.es> escribió:
> hola,
>
> Estoy tratando de hacer una consulta con un código como este:
>
> SelectableDataSource comunidad = Utils.getFlyrVect(view,
> "comunidad").getRecordset(); // comunidad es un recordset válido
> String sql = "select * from " + comunidad.getName() + ";" ;
> comunidad.start();
> DataSource result = comunidad.getDataSourceFactory().executeSQL(sql,
> DataSourceFactory.MANUAL_OPENING);
> comunidad.stop();
> for (int i = 0; i < result.getRowCount(); i++) {
>        for (int j = 0; j < result.getFieldCount(); j++) {
>                Value a = result.getFieldValue(i, j);
>        }
> }
>
>
> Pero al ejecutarlo salta una excepción de este tipo:
>
> java.lang.NullPointerException
>        at com.iver.cit.gvsig.fmap.drivers.dbf.DbaseFile.getStringFieldValue(DbaseFile.java:243)
>        at com.iver.cit.gvsig.fmap.drivers.dbf.DBFDriver.getFieldValue(DBFDriver.java:168)
>        at com.hardcode.gdbms.engine.data.file.FileDataSourceAdapter.getFieldValue(FileDataSourceAdapter.java:156)
>        at com.hardcode.gdbms.engine.strategies.PDataSource.getFieldValue(PDataSource.java:119)
>        at com.hardcode.gdbms.engine.strategies.FilteredDataSource.getFieldValue(FilteredDataSource.java:136)
>        at com.hardcode.gdbms.engine.data.DataSourceCommonImpl.getAsString(DataSourceCommonImpl.java:54)
>        at es.udc.cartolab.gvsig.pmf.queries.SelectQueryDialog$Query1.doIt(SelectQueryDialog.java:43)
>        at es.udc.cartolab.gvsig.pmf.queries.SelectQueryDialog.actionPerformed(SelectQueryDialog.java:80)
>
> Adjunto el shape. ¿Alguien sabe por donde pueden ir los tiros?


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