CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: complicazio con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 10 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Pagina 3 di 5 primaprima 12345 ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 21 a 30 su 49
Discussione:

[ECLIPSE] Copia db sqlite preesistente da 'assets' a /data/data/..

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #21
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da lorenzogiudici5 Visualizza il messaggio
    public String queueAll(){
    String[] columns = new String[]{KEY_CONTENT};
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, columns,
    null, null, null, null, null);
    String result = "";

    int index_CONTENT = cursor.getColumnIndex(KEY_CONTENT);
    for(cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){
    result = result + cursor.getString(index_CONTENT) + "\n";
    }
    return result;
    }

    Il metodo .queueAll() l'ho preso dal tuo esempio. Praticamente fa una query della tabella contatti e aggiunge tutto quello che c'è nella colonna KEYCONTENT in una stringa
    Mmm.. ok. Allora, come prima, eseguiamo un fix and code riga per riga, eseguendo di volta in volta, per capire qual'è l'errore
    Però occhio perchè l'errore potrebbe non risiedere nel metodo queueALL() in sè per sè, ma dall'utilizzo che se ne fa nella classe main o la classe che lo usa
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  2.  
  3. #22
    Baby Droid


    Registrato dal
    Apr 2012
    Messaggi
    11

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ho provato a inserire come prima Log.e per vedere dove si bloccasse. Appena richiamo il metodo
    codice:
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, null, null, null, null, null, null);
    si blocca con il solito errore:
    04-23 09:58:24.249: E/AndroidRuntime(625): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.databasefrank17.prova/it.databasefrank17.prova.Database_frank17_provaAct ivity}: java.lang.NullPointerException

  4. #23
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da lorenzogiudici5 Visualizza il messaggio
    Ho provato a inserire come prima Log.e per vedere dove si bloccasse. Appena richiamo il metodo
    codice:
    Cursor cursor = sqLiteDatabase.query(MYDATABASE_TABLE, null, null, null, null, null, null);
    si blocca con il solito errore:
    04-23 09:58:24.249: E/AndroidRuntime(625): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.databasefrank17.prova/it.databasefrank17.prova.Database_frank17_provaAct ivity}: java.lang.NullPointerException
    Hum, ti dice Unable to start Activity... gentilmente, potresti inviarmi l'export del progetto in eclipse, così cerco di analizzarlo nel suo complesso e ti indico dove è l'errore? Grazie, Ciao
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  5. #24
    Baby Droid


    Registrato dal
    Apr 2012
    Messaggi
    11

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Certo! eccolo, e grazie mille
    database_frank17_prova.zip

  6. #25
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Allora, ho trovato diversi errori

    1) il database denominato 'rubricasql.sql' è un file da 0kb. E' necessario utilizzare database di tipo sqlite e che contengano la tabella android_metadata e il campo denominato 'locale'. Per la creazione di un db preesistente ti consiglio il tool SQLite Administrator - International Milestone Beta
    Per sopperire alla mancanza del db, ne ho creato uno io con quel tool, contente la tabella 'rubrica' con un unico campo, 'nome' e l'ho sostituito nell'assets rispetto al tuo db.

    2) Nel metodo copyDatabase (della classe SQLiteAdapter.java), la riga per la copia in output del file, OutputStream dbOut = new FileOutputStream(DB_PATH + "rubricasql.sql");, mancava del DB_PATH (in pratica indicavi un path soltanto utilizzando il nome file.
    Il nomefile, memorizzato in una final String sempre in questa classe era inoltre diverso rispetto al nomefile reale contenuto nell'assets:
    il nome file si chiamata rubricasql.sql, tu indicavi 'rubrica.sql'.

    3) La Function CheckDatabase() (che controlla l'esistenza del db fisico sul device) era già utilizzata prima della copia all'interno della Function copyDatabase(). Tu la richiamavi due volte, nell'Oncreate() della classe SQLiteAdapter().
    Inoltre, per come è concepito questo Adapter e data la presenza della Function copyDatabase() è conveniente utilizzare la funzione nei metodi openToRead() o openToWrite(), in modo che il file venga copiato quando lo decidi tu.

    4) nella function copyDatabase() indicavi ulteriormente il nome file sbagliato, ovvero rubrica.sql, quando il file fisico si chiama rubricasql.sql:
    InputStream assetsDB = context.getAssets().open("rubricasql.sql");

    5) Ho aggiunto qualche Throws Exception qui e là

    Il progetto che mi hai inviato, corretto, lo puoi scaricare qui

    Spero sia tutto chiaro!

    Ciao
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  7. Il seguente Utente ha ringraziato frank17next per il post:

    lorenzogiudici5 (25-04-12)

  8. #26
    Baby Droid


    Registrato dal
    Apr 2012
    Messaggi
    11

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Non so come ringraziarti. Rileggendo velocemente il mio codice e il tuo corretto mi sono accorto davvero di quanti errori avevo commesso!
    Grazie mille davvero per l'aiuto e il supporto, quando ho tempo lo analizzo riga per riga e nel caso avessi ancora qualche dubbio spero di poter contare anche su di te

    Sei un grande! Thanks!

  9. #27
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da lorenzogiudici5 Visualizza il messaggio
    Non so come ringraziarti. Rileggendo velocemente il mio codice e il tuo corretto mi sono accorto davvero di quanti errori avevo commesso!
    Grazie mille davvero per l'aiuto e il supporto, quando ho tempo lo analizzo riga per riga e nel caso avessi ancora qualche dubbio spero di poter contare anche su di te

    Sei un grande! Thanks!
    E' un piacere!
    Ciao
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  10. #28
    Baby Droid


    Registrato dal
    Apr 2012
    Messaggi
    11

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Sono ancora qui
    Del codice che mi hai passato credo di aver capito tutto, ora mi sono chiari gli errori e soprattuto il perchè sbagliavo. Sono invece ancora un po' in confusione con la creazione del database. Ho scaricato il programma che mi hai suggerito, ma non riesco proprio a tirar fuori un file sql..
    riesci a darmi qualche dritta per il suo funzionamento?

  11. #29
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da lorenzogiudici5 Visualizza il messaggio
    Sono ancora qui
    Del codice che mi hai passato credo di aver capito tutto, ora mi sono chiari gli errori e soprattuto il perchè sbagliavo. Sono invece ancora un po' in confusione con la creazione del database. Ho scaricato il programma che mi hai suggerito, ma non riesco proprio a tirar fuori un file sql..
    riesci a darmi qualche dritta per il suo funzionamento?
    Beh, niente di che. Devi creare un nuovo db vuoto, aggiungere la tabella android_metadata con un solo campo chiamato 'locale' e un solo record con valore 'it_IT'. Puoi usare anche la seguente query:
    CREATE TABLE “android_metadata” (“locale” TEXT DEFAULT ‘it_IT’) and INSERT INTO “android_metadata” VALUES (‘it_IT’)

    Dopodichè puoi aggiungere tutte le tabelle che vuoi.

    Un'unica accortezza: se ti metti ad usare Cursor e simili è necessario che -in ogni nuova tabella- il campo primary key abbia il nome '_id'. Alternativamente puoi chiamare il campo primary key come ti pare (ad esempio 'id' o 'idContatto' o come vuoi tu) a parte che rispetti il vincolo di costruire le interrogazioni rinominando in query il campo -ad esempio- 'idContatto' come '_id', ovvero: SELECT idContatto AS _id, Nome, Cognome, Telefono, .... FROM Contatti WHERE Cognome like '%xxx%' ... e così via..
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  12. #30
    Baby Droid


    Registrato dal
    Jun 2012
    Messaggi
    13

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Buongiorno a tutti, son nuovo del forum e anche di android...ma non di Java fortunately.

    Sto impazzendo pure io su SQLite. Devo usare un mioDB di 6 mega con tutti i contatti. Ho provato il codice che avete impostato all'inizio della conversazione. Ho spostato il copyDatabase prima del getReadableDatabase, ma nonostante questo mi va in exception nella copia dall'assets in databases.....

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

    proprio qui!

    Qualcuno puoi gentilmente aiutarmi? Grazie mille per qualsiasi info

Pagina 3 di 5 primaprima 12345 ultimoultimo
Ultima pagina

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy