Posso scaricare una SQL db on / sdcard e accedervi dalla mia app per Android?

Ho già scoperto che non c’è modo di raggruppare i file in un .apk e averli su / sdcard, l’opzione migliore finora è quella di scaricare i file di grandi dimensioni al primo avvio. Mi sono imbattuto in un tutorial che diceva come raggruppare un db sqlite con l’apk e quindi copiarlo in modo che fosse ansible accedervi con SQLiteDatabase (raddoppiando quindi lo spazio necessario e non utilizzando affatto / sdcard).

http://developer.android.com/guide/topics/data/data-storage.html#db dice che tutti i database DEVONO trovarsi in / data / data / nome_pacchetto / database.

È davvero così? C’è un modo per ingannare il framework nell’apertura di un database che si trova sulla partizione di / sdcard? C’è un modo per usare un altro java wrapper / framework SQLite per accedere a tali database?

Se la risposta a quanto sopra è “No”, quali altre opzioni ho? I miei dati sono molto ben rappresentati in un modello relazionale, ma sono troppo grandi, inoltre, voglio essere in grado di aggiornarlo senza la necessità di reinstallare / aggiornare l’intera app.

Certo che puoi. I documenti sono un po ‘contrastanti riguardo a questo, come dicono anche che non sono imposte limitazioni. Penso che dovrebbero dire che i percorsi relativi si trovano nella posizione sopra e che i dbs sono privati. Ecco il codice che desideri:

File dbfile = new File("/sdcard/mydb.sqlite" ); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); System.out.println("Its open? " + db.isOpen()); 

Prova questo:

 String dir = Environment.getExternalStorageDirectory().getPath() File dbfile = new File(dir+"/mydb.sqlite"); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); System.out.println("Its open? " + db.isOpen()); 

Solo un’idea:

  • puoi inserire il tuo database.db nella cartella delle risorse.

  • se il tuo file database.db è più grande di 2 Mb il sistema non è in grado di comprimerlo, quindi hai bisogno di altre opzioni

  • puoi rinominare il tuo database.db per esempio database.jit o database.mp3 – che non sono compressi, che alla prima esecuzione puoi rinominarlo in database.db

controllalo …

memorizzazione dei dati delle applicazioni Android su scheda SD

Condivido il prossimo codice. Dichiara opcionesMenu Vector

 Vector < String > opcionesMenu = new Vector< String >(); // the database is SDCard. I saw the code to Blackberry (net.rim) String rutaDB = "/storage/extSdCard/Android/databases/Offshore.db"; SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(rutaDB, null); Cursor cursor = db.rawQuery("SELECT Codigo, Nombre FROM Ruta ORDER BY Codigo, Nombre", null); if (cursor.moveToFirst()) { do { opcionesMenu.add(cursor.getString(0) + " - " + cursor.getString(1)); } while(cursor.moveToNext()); } db.close();