Autore Topic: problema nella copia del db  (Letto 738 volte)

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
problema nella copia del db
« il: 30 Agosto 2010, 20:49:56 CEST »
0
ciao,torno a rompere con un problema che mi ha fatto perdere parecchio tempo e a cui non trovo soluzione,arrivo al punto,sto cercando di inglobare nel package un database,messo oppurtunamente nella cartella assets,questo è il codic eincriminato:
Codice (Java): [Seleziona]
    public void createNewDatabase() {
        InputStream assetsDB = null;
        try {
            assetsDB = context.getAssets().open(DATABASE_NAME);
            OutputStream dbOut = new FileOutputStream(DATABASE_PATH + DATABASE_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();
        }
    }
a runtime non riesce a crearlo e nel log trovo il messaggio : Could not create new database...,puo essere un problema di permessi?ho dato al package questi permessi:
Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.WRITE_OWNER_DATA"></uses-permission>
<uses-permission android:name="android.permission.READ_OWNER_DATA"></uses-permission>
ne servono altri?
per il progetto completo lo potete trovare qua:
2shared - download test_copydb.zip
grazi e a chi vorrà aiutarmi ;)
« Ultima modifica: 30 Agosto 2010, 21:51:59 CEST da JD, Reason: Usate i bbcode java e xml!! xD »

Offline Vytek

  • Translate Team
  • Utente junior
  • **
  • Post: 125
  • Respect: +6
    • Mostra profilo
  • Dispositivo Android:
    Samsung S5
  • Sistema operativo:
    Windows 8.1
Re:problema nella copia del db
« Risposta #1 il: 30 Agosto 2010, 21:56:18 CEST »
+2
Ciao,
molto probabilmente sei incappato nel mio stesso problema. Anche a me nella mia parte di codice per la gestione dei DB non riuscivo a copiare il DB. Molto probabilmente non è stata creata la relativa cartella sotto /data/data. Prova a vedere il mio codice qui:

AlmanacSQLiteDatabaseAdapter.java -
 almanac -
 
 Project Hosting on Google Code


Che poi in pratica sono due righe per verificare se la cartella esiste e crearla di conseguenza:

Codice (Java): [Seleziona]
Log.i(TAG, "Check if create dir : " + DB_PATH_PREFIX
                                + aContext.getPackageName() + DB_PATH_SUFFIX);

                // if the path doesn't exist first, create it
                File f = new File(DB_PATH_PREFIX + aContext.getPackageName()
                                + DB_PATH_SUFFIX);
                if (!f.exists())
                        f.mkdir();

Questo dovrebbe risolvere il tutto...facci sapere...

Un saluto.

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
Re:problema nella copia del db
« Risposta #2 il: 31 Agosto 2010, 14:57:52 CEST »
0
bene ora funziona :) ,l'errore l'ho fatto nel integrare il database nel progetto,non so come ma mi aveva preso un collegamento al db e non il db stesso  :-o
poi ho aggiunto un controllo sulla presenza della cartella per evitare che l'applicazione si blocchi al primo avvio..ora è perfetto.grazie.