SQLite OnCreate OnUpgarde
Bonsoir, je voulais avoir quelques précisions sur les base de données SQLite android.
Je pense avoir compris que pour lancer l'objet base de données, il faut faire
dans lequel j'ai l'instruction
Code:
db = DBHelper.getWritableDatabase();
Cette instruction appelle soit la méthode onCreate() soit la méthode OnUpgrade().
J'ai aussi compris que la méthode appelée dépend du numéro de version de la bd.
A partir de la, quand dans mon appli, quand j'ouvre la BD avec db.open(), cela lance la méthode onCreate().
Si je ferme la BD avec db.close() et que derrière je refait db.open(), quelle méthode sera appelée : onCreate() ou onUpgrade() ?
Sans avoir changé de numéro de version ?
En ayant changé le numéro de version ?
Ou le changer ?
La méthode onUpgrade sert elle pour l'ouverture et la fermeture consécutive de la BD dans la même execution de l'appli (sans fermer l'appli) ou son but est de s'executer quand on relance l'appli après l'avoir fermer ??
Cela fait beaucoup de question je sais, j'ai lu une dizaine de tuto autant français que anglais et cela n'est jamais écrit clairement.
EDIT : une autre question
Quand l'instruction est exécutée, la méthodé onCreate() est invoquée.
Code:
1 2 3 4 5 6 7 8 9
| public void onCreate(SQLiteDatabase db)
{
System.out.println(" OnCreate ");
db.execSQL(DATABASE_CREATE);
db.execSQL(INSERT1);
db.execSQL(INSERT2);
db.execSQL(INSERT3);
Log.w("TEST : ", "PREMIERE CREATION DE LA BASE !");
} |
J'ai donc 3 enregistrements dans ma BD.
Imaginons que je fasse 2 insert en plus dans la BD, je me retrouve normalement avec 5 enregistrements.
Je .close() la BD
Je la réouvre, si onCreate() est utilisée, que se passe-t-il ?
Si onUpgrade() est utilisée,
Code:
1 2 3 4 5 6 7 8 9
| public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
System.out.println(" OnUpgrade ");
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS activites");
onCreate(db);
} |
j'efface la BD (je me retrouve donc avec 0 enregistrements) et j'appele onCreate() qui me refait les 3 enregistrements de la méthode.
Je ne comprend donc pas en quoi appeler la méthode onUpgrade() permet de mettre à jour la BD, selon moi, elle fait juste un reset de la BD.....
Je ne comprend pas....
Merci d'éclairer mes lanternes.