2011-07-05 3 views
1

Je suis un peu confus avec la gestion de la base de données android SQLite. Je suis allé à travers des tutoriels, mais n'a pas eu le point exact.SQLite Database Upgrading

nous pouvons avoir une classe de base de données qui s'étend SQLiteOpenHelper, et peut remplacer la méthode onCreate() et créer une base de données.

La mise à niveau de la partie de base de données est un peu confuse. dans la méthode suivante comment gérer les verions onUpdate(SQLiteDatabase db,int old Version,int newVerison)

Est-ce que signifie la première fois que nous créons la base de données signifie la version 1. Modifiez ensuite une fois si la version 2. Ensuite, si nous voulons modifier à nouveau ancienne version = 2, newVerison = 3
[onUpdate(SQLiteDatabase db,int old Version,int newVerison)]

Cette méthode sera exécuté lorsque nous passons la version constructeur comme dans le code suivant (comme 2)

public DatabaseHelper(Context context) { 
    super(context, dbName, null,2); 
} 

Je dois savoir si quand nous avons besoin de faire appel onUpgrade() méthode doit nous passer la version en 2 toujours ou nous devons augmenter un à chaque fois pour la version précédente

Répondre

0

J'utilise this approach pour faire l'évolution du schéma de base de données un peu plus facile, vous trouverez peut-être utile aussi .

+0

Oui, mais pouvez-vous expliquer comment gérer les versions lorsque nous avons besoin de mettre à niveau la base de données. Cela signifie-t-il que la première fois que nous créons une base de données signifie la version 1. Puis modifions une fois la version 2. Ensuite, si nous voulons modifier à nouveau Version = 2, newVerison = 3 ou chaque fois que nous devons appeler la méthode onUpgrade() passez la version 2 dans le constructeur – JibW

0

son totalement à vous que comment vous allez maintenir la version de la base de données. vous pouvez changer votre version après modification dans la structure de la table ou après toute modification dans le contenu. Il n'y a pas de règle stricte pour maintenir le versioning. Cela dépend de l'exigence du projet. Incrémenter la version de votre base de données chaque fois que le schéma change.

+0

Oui, mais pouvez-vous expliquer comment gérer les versions lorsque nous avons besoin de mettre à niveau la base de données. Cela signifie-t-il que la première fois que nous créons une base de données signifie la version 1. Puis modifions une fois la version 2. Ensuite, si nous voulons modifier à nouveau Version = 2, newVerison = 3 ou chaque fois que nous devons appeler la méthode onUpgrade() passez la version 2 dans le constructeur – JibW

8

Vous n'avez jamais besoin d'appeler directement le onUpgrade. Android l'appellera si nécessaire lorsque vous ouvrirez la base de données en comparant la version de la base de données avec la version que votre code spécifie comme version actuelle.

Vous avez juste besoin de gérer le processus de mise à niveau onUpgrade - il pourrait aller quelque chose comme ceci:

int curVer = oldVersion; 
while (curVer < newVersion) { 
    curVer++; 
    switch (curVer) { 
     case 2: { 
      // Upgrade from V1 to V2 
      break; 
     } 
     case 3: { 
      // Upgrade from V2 to V3 
      break; 
     } 
     case 4: { 
      // Upgrade from V3 to V4 
      break; 
     } 
    } 
} 

Disons que votre newVersion est 4 et ancienneversion est 1 - première itération incrémente Curver à 2 et se déroulera le code de mise à niveau V2 vers V3. La deuxième itération incrémente curVer à 3 et exécute le code de mise à niveau de V2 à V3, l'itération finale incrémente curVer à 4 et exécute le code de mise à niveau de V3 à V4.

Cela fonctionne pour toutes les valeurs de oldVersion inférieures à newVersion. et mettra à niveau séquentiellement via les versions intermédiaires si vos utilisateurs ignorent les mises à niveau de l'application.

+0

Pourriez-vous me dire comment conserver les données dans la base de données lors de la mise à jour? –

+1

@PratikButani Vous n'avez rien à supprimer lors de la mise à niveau. Les modifications de schémas simples telles que l'ajout d'une colonne ou d'une table n'affectent pas directement les données existantes, les mises à jour plus complexes copient généralement les données d'origine dans une table temporaire, les transforment et, lorsqu'elles sont prêtes, suppriment la table d'origine . – RivieraKid

+0

Merci, j'ai compris, mais y a-t-il un moyen de gérer toute la version comme certains sont utilisés v1 ou d'autres sont v2. comment puis-je gérer cela. –

Questions connexes