[Gvsig_desarrolladores] edición de DBF sobre gvsigMobile

Juan Lucas Dominguez Rubio jldominguez en prodevelop.es
Vie Feb 12 10:38:48 CET 2010


Hola, creo que lo que he dicho para Rocío es también valido para ti:
 
http://listserv.gva.es/pipermail/gvsig_desarrolladores/2010-February/003856.html
 
La clase DBFFromReadVect está pensada más bien para exportar completamente una capa sin pasar por el modo edición. Creo que no es adecuada para tu caso.
 
Saludos,
 
 
Juan Lucas Domínguez Rubio
---
Prodevelop SL, Valencia (España)
Tlf.: 96.351.06.12 -- Fax: 96.351.09.68
http://www.prodevelop.es <http://www.prodevelop.es/> 
---

________________________________

De: gvsig_desarrolladores-bounces en listserv.gva.es en nombre de roeptisa
Enviado el: vie 12/02/2010 10:10
Para: gvsig_desarrolladores en listserv.gva.es
Asunto: [Gvsig_desarrolladores] edición de DBF sobre gvsigMobile




Buenas,

Desde gvsigMobile tengo que editar un fichero dbf, para ello hago uso de la
clase DBFFromReadVect.
Esta clase cuando aades un registro, te obliga a recorrerte el dbf completo
y aadir todos los registros de nuevo, con lo cual, cuanto ms grande es el
fichero dbf ms tarda, y sobre todo sobre una PDA, en la que la memoria no
es muy grande.
Me gustara saber si de alguna forma se puede mejorar el rendimiento de esa
funcionalidad.
Este es el cdigo que uso cuando inserto una fila en un dbf:

public static void aadirFila(String fName,HashMap newRow)
        {
                //Funcin que aada una fila a una tabla.
                //ENTRADA: newRow => hashmap con los datos de la fila a insertar.
                //fName => ruta completa del dbf
               
                try{
                       
                                File f;
                                f = new File(fName);
                                DbfMemoryDataSource drv;
                                drv = new DbfMemoryDataSource(f);
                                drv.start();
                               
                               
                                int numFilas = (int)drv.getRowCount();
                                int numCols = drv.getFieldCount();
                               
                               
                                DbaseFileHeaderNIO myHeader;
                                myHeader = DbaseFileHeaderNIO.createDbaseHeader(drv);
                                numFilas++;
                                myHeader.setNumRecords(numFilas);
                       
                                OrderFileOutputStream outStream = new OrderFileOutputStream(f);
                                DbaseFileWriterNIO dbfWrite = new
DbaseFileWriterNIO(myHeader,outStream);
                               
               
                               
                            FeatureTemp fea = new FeatureTemp();
                                fea.setFieldNames(drv.getFieldNames());
                               
                                for (int j=0; j<numFilas-1; j++){
                                       
                                        fea.setValues(drv.getRow(j));
                                        Object[] record = fea.getValues();
                                        dbfWrite.write(record);
                                }      
                               
                                Object[] record  = new Object[numCols];
                               
                                for (int k=0; k < numCols; k++)
                        {
                        record[k] = ValueFactory.createValueByType(obj.toString(),
drv.getFieldType(k));  
                        }
                                dbfWrite.write(record);
                               
                               
                                dbfWrite.close();
                                outStream.close();
                       
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
              }
             
        }

Primero se recorre el dbf y vuelve a insertar todos los registros, y luego
en el segundo bucle, inserto la nueva fila.

Muchas gracias de antemano.

Saludos,

Roco.

--
View this message in context: http://n2.nabble.com/edicion-de-DBF-sobre-gvsigMobile-tp4560072p4560072.html
Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.
_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en listserv.gva.es
http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20100212/ad17f90b/attachment.htm 


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