Easiest way to export longitude and latitude data stored in a SQLite database to a file so it can be imported to a Google Map API through a website?

后端 未结 2 577
广开言路
广开言路 2021-01-25 10:45

I have created an application that records a series of longitude and latitude values in a SQLite database and display them as a coloured track on a MapActivity.

I now wa

2条回答
  •  春和景丽
    2021-01-25 11:22

    Ok Just add this class in your Android Project (with your respective modifications)

    public class DatabaseAssistant
    {
        private static final String EXPORT_FILE_NAME = "/sdcard/datanaexport.xml";
    
        private Context _ctx;
        private SQLiteDatabase _db;
        private Exporter _exporter;
    
        public DatabaseAssistant( Context ctx, SQLiteDatabase db )
        {
            _ctx = ctx;
            _db = db;
    
            try
            {
                // create a file on the sdcard to export the
                // database contents to
                File myFile = new File( EXPORT_FILE_NAME );
                            myFile.createNewFile();
    
                            FileOutputStream fOut =  new FileOutputStream(myFile);
                            BufferedOutputStream bos = new BufferedOutputStream( fOut );
    
                _exporter = new Exporter( bos );
            }
            catch (FileNotFoundException e)
            {
                e.printStackTrace();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    
        public void exportData( )
        {
            log( "Exporting Data" );
    
            try
            {
                _exporter.startDbExport( _db.getPath() );
    
                // get the tables out of the given sqlite database
                        String sql = "SELECT * FROM sqlite_master";
    
                        Cursor cur = _db.rawQuery( sql, new String[0] );
                        Log.d("db", "show tables, cur size " + cur.getCount() );
                        cur.moveToFirst();
    
                        String tableName;
                        while ( cur.getPosition() < cur.getCount() )
                        {
                            tableName = cur.getString( cur.getColumnIndex( "name" ) );
                            log( "table name " + tableName );
    
                            // don't process these two tables since they are used
                            // for metadata
                            if ( ! tableName.equals( "android_metadata" ) &&
                            ! tableName.equals( "sqlite_sequence" ) )
                            {
                                exportTable( tableName );
                            }
    
                            cur.moveToNext();
                        }
                    _exporter.endDbExport();
                _exporter.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    
        private void exportTable( String tableName ) throws IOException
        {
            _exporter.startTable(tableName);
    
            // get everything from the table
            String sql = "select * from " + tableName;
            Cursor cur = _db.rawQuery( sql, new String[0] );
            int numcols = cur.getColumnCount();
    
            log( "Start exporting table " + tableName );
    
    //      // logging
    //      for( int idx = 0; idx < numcols; idx++ )
    //      {
    //          log( "column " + cur.getColumnName(idx) );
    //      }
    
            cur.moveToFirst();
    
            // move through the table, creating rows
            // and adding each column with name and value
            // to the row
            while( cur.getPosition() < cur.getCount() )
            {
                _exporter.startRow();
                String name;
                String val;
                for( int idx = 0; idx < numcols; idx++ )
                {
                    name = cur.getColumnName(idx);
                    val = cur.getString( idx );
                    log( "col '" + name + "' -- val '" + val + "'" );
    
                    _exporter.addColumn( name, val );
                }
    
                _exporter.endRow();
                cur.moveToNext();
            }
    
            cur.close();
    
            _exporter.endTable();
        }
    
        private void log( String msg )
        {
            Log.d( "DatabaseAssistant", msg );
        }
    
        class Exporter
        {
            private static final String CLOSING_WITH_TICK = "'>";
            private static final String START_DB = "

    instatiate DatabaseAssistant Class

    DatabaseAssistant DA = new DatabaseAssistant(myContext, mySQLiteDatabase);
    

    Do you want export data??? so...

    DA.exportData();
    

    ;) hope this help!

    Jorgesys

提交回复
热议问题