2010-10-14 3 views
10

J'ai essentiellement terminé le développement d'une application Android qui utilise les bases de données SQLite que je copie dans la zone de données utilisateur sur l'appareil, par exemple /data/data/com.company.app/databases/users .dbAndroid gère les mises à jour de l'application et les modifications de la base de données

Je ne sais pas comment la procédure de mise à jour de l'application sur le marché a lieu et je ne sais pas non plus comment je pourrais la tester.

Je vérifie actuellement si la base de données existe sur le périphérique et la copie si ce n'est pas le cas (généralement uniquement lors du premier lancement). Que se passe-t-il si j'ai une nouvelle version de la base de données dans mon application mise à jour? Une mise à jour du marché effacera-t-elle les données de l'utilisateur afin qu'elles puissent copier ma nouvelle base de données lors du prochain lancement? Que se passera-t-il dans le futur si je modifie la base de données/ajoute des enregistrements/etc et l'empaquette avec la nouvelle application? Cette base de données ne remplacera-t-elle pas l'ancienne base de données? Sinon, pour éviter de copier et de remplacer les bases de données de l'ensemble d'applications à chaque lancement, il est possible de vérifier la taille et la date des fichiers de base de données et de les copier uniquement si la base de données est plus récente.

Si quelqu'un a besoin de clarification s'il vous plaît demander.

Répondre

12

Je fais quelque chose de similaire. Ce que j'ai fait est de définir la version de la base de données, puis quand je vérifie si la base de données existe, je dois également m'assurer que c'est la bonne version. Si ce n'est pas le cas, j'enregistre les favoris de la base de données, j'essuie et recopie ma base de données, puis je remets les favoris de l'utilisateur.

Ceci est ma mise à niveau sur

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    if (oldVersion == 2) { 

     System.out.println("Performing upgrade!"); 
     openDataBase(); 
     // save the old favorites 
     Cursor mCursor = getFavorites(); 
     ArrayList<Stop> favs = allCursorToStops(mCursor); 
     mCursor.close(); 

     deleteRecreate(db); 

     openDataBase(); 

     for (int i = 0; i < favs.size(); i++) 
      setFavorite(favs.get(i)); 

     close(); 

    } else { 

     deleteRecreate(db); 

    } 
} 

Voici où je vérifie l'existence/si besoin de mise à niveau etc

boolean dbExist = checkDataBase(); 

    if(dbExist){ 
     // check if we need to upgrade 
     openDataBase(); 
     int cVersion = myDataBase.getVersion(); 
     close(); 
     if(cVersion != VERSION) 
      onUpgrade(myDataBase, myDataBase.getVersion(), VERSION); 
+1

et comment onUpgrade (..) appelée? – Nativ

+0

@powerX onUpgrade est appelée automatiquement lorsque vous incrémentez le numéro de version de la base de données. – ariets

+0

oui, déjà après. Je vous remercie – Nativ

Questions connexes