Autore Topic: Utilizzo database esistente in applicazione.  (Letto 1505 volte)

Offline scaforchio

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu Linux
Utilizzo database esistente in applicazione.
« il: 17 Aprile 2011, 19:05:45 CEST »
0
Ciao,
mi trovo davanti al seguente problema:

ho un database esistente che voglio utilizzare nella mia applicazione android, come faccio a fare in modo che il database venga copiato in modo "automatico" nella cartella giusta in fase di installazione?
Al momento ho importato il DB nella cartella Assets ma ovviamente non riesco ad aprirlo in quanto non è nella cartella /data/data/........


Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo

Offline scaforchio

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu Linux
Re:Utilizzo database esistente in applicazione.
« Risposta #2 il: 17 Aprile 2011, 19:47:45 CEST »
0
Ho visitato il link proposto e in effetti sembra contenere quello che mi serve.
Provando il codice però mi viene fuori l'errore di file non trovato in fase di copia perchè nella cartella /data/data/... non c'è la sottocartella databases.
Come posso crearla?

Offline scaforchio

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu Linux
Re:Utilizzo database esistente in applicazione.
« Risposta #3 il: 17 Aprile 2011, 21:43:56 CEST »
0
OK! Grazie mille.

Ho risolto mettendo nel main:

Codice: [Seleziona]
SQLiteDatabase myDB = openOrCreateDatabase("alim.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
Prima di istanziare la classe citata nel link che mi hai dato.

Offline Roberto62

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Sistema operativo:
    Windows XP
Re:Utilizzo database esistente in applicazione.
« Risposta #4 il: 01 Maggio 2011, 12:48:25 CEST »
0
ciao, non riesco a capire dove devo inserire il file contenente il mio database per poi essere copiato.

ho inserito il file nella cartella assets del progetto.

quando faccio

int i =assetsDB.read();

i è valorizzato a -1

dove sbaglio ?

grazie
« Ultima modifica: 01 Maggio 2011, 12:58:22 CEST da robert@ »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Utilizzo database esistente in applicazione.
« Risposta #5 il: 01 Maggio 2011, 18:17:09 CEST »
0
Devi metterlo nella cartella assets.

Offline Roberto62

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire HD
  • Sistema operativo:
    Windows XP
Re:Utilizzo database esistente in applicazione.
« Risposta #6 il: 01 Maggio 2011, 22:33:42 CEST »
0
si ho inserito il file database.db nella cartella assets.

quado eseguo il seguente codice:

public void createNewDatabase() {
        InputStream assetsDB = null;
        try {
            assetsDB = context.getAssets().open(DB_NAME);
            OutputStream dbOut = new FileOutputStream(DB_PATH + DB_NAME);
 
            byte[] buffer = new byte[1024];
            int length;
            while ((length = assetsDB.read(buffer)) > 0) {
                dbOut.write(buffer, 0, length);
            }
 
            dbOut.flush();
            dbOut.close();
            assetsDB.close();
            Log.i(TAG, "New database created...");
        } catch (IOException e) {
            Log.e(TAG, "Could not create new database...");
            e.printStackTrace();
        }
}

nella parte :

while ((length = assetsDB.read(buffer)) > 0) {
                dbOut.write(buffer, 0, length);
 }

si genera un IOException perchè la variabile "length" sisulta essere valorizzata a "-1" e non risco a capire il perchè (il codice sopra inserito è estrapolato dal tuttorial)

Offline DarkPhoinix

  • Utente junior
  • **
  • Post: 133
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2 & Samsung Galaxy SII
  • Sistema operativo:
    LNX
Re:Utilizzo database esistente in applicazione.
« Risposta #7 il: 03 Maggio 2011, 14:18:41 CEST »
0
ma quindi non è vero che un database può essere utilizzato solo da quel package? io so che ogni programma su android gira come un utente diverso e che la dir data/data/user.programma.com/DataBase
non permette l'ascesso.... volendo con uno script di shell questa cosa si aggira... ma si può da programma.mio a programma.tuo ?   

Offline Salvo_morph

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Spica
  • Sistema operativo:
    Mac OS X 10.7.4
Re:Utilizzo database esistente in applicazione.
« Risposta #8 il: 04 Marzo 2012, 11:41:02 CET »
0