pour plus d'ajouter des points manquants ici, conformément à la demande par Jaskey
Version de base de données est stockée dans le fichier de base de données sqlite.
catch est le constructeur de
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
Ainsi, lorsque la base de données helper constructeur est appelé avec un name
(2ème paramètre), plateforme vérifie si la base de données existe ou pas et si la base de données existe, il obtient les informations de version du fichier de base de données d'en-tête et déclenche le droit de retour d'appel
comme déjà expliqué dans le vieux la réponse, si la base de données avec le nom n'existe pas, il déclenche onCreate.
ci-dessous l'explication expliquer onUpgrade cas avec un exemple
Par exemple, votre première version de l'application a la DatabaseHelper (extension de SQLiteOpenHelper) avec le constructeur de passage de la version 1 et puis vous avez fourni une mise à niveau de l'application avec le nouveau code source ayant la version passé en 2, puis automatiquement lorsque le DatabaseHelper est construit, plate-forme de déclencheurs onUpgrade par voir le fichier existe déjà, mais la version est inférieure à la version actuelle qui vous avez passé.
Maintenant que vous êtes de rabotage pour donner une troisième version de l'application avec la version db 3 (db version est augmenté uniquement lorsque schéma de base de données est d'être modifiées). Dans de tels increamental mises à niveau, vous devez écrire la logique de mise à niveau à partir de chaque version increamentally pour un meilleur code maintenable
exemple de pseudo-code ci-dessous
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion) {
case 2:
//upgrade logic from version 1 to 2
case 3:
//upgrade logic from version 2 to 3
case 4:
//upgrade logic from version 3 to 4
break;
default:
throw new IllegalStateException(
"onUpgrade() with unknown newVersion" + newVersion));
}
}
Avis manquants break
déclaration dans les cas 2 et 3. C'est ce que je veux dire par la mise à niveau incrémentielle.
dire si l'ancienne version est 2 et nouvelle version est de 4, alors la logique de mise à niveau de la base de données de 2 à 3 puis à 4
si l'ancienne version est 3 et la nouvelle version est 4, il suffit d'exécuter la logique de mise à niveau de 3 à 4