J'ai créé une application Android qui, chèque au démarrage s'il existe une nouvelle version de l'application. Si oui, l'application télécharge le nouveau fichier APK et sur l'installation de nouveaux APK.
Mon application utilise la DB SQLite. Mais cette dB, d'une version à d'autres peut changer.
Je pense que je dois utiliser la méthode: mais je ne sais pas exactement comment l'utiliser. P> Quand je démarre l'application, j'utilise ce code pour Crète Base de données (si elle n'existe pas): p> Que dois-je modifier si je veux utiliser onpgrade () code> méthode?
Et quand dois-je l'appeler? P> p>
3 Réponses :
En général, cela signifie que le système d'exploitation vous dit " hey, vous avez demandé la version de la structure de la base de données 10, mais j'ai trouvé que nous avons eu quelque chose de plus vieux ici, c'est donc votre chance de résoudre ce problème avant de commencer à utiliser la base de données (et potentiellement Crash dû à une inadéquation de structure) " em>. p>
Dans cette méthode, vous devriez faire tout ce qui est nécessaire à, eh bien .. Mettez à niveau une structure de mise à niveau de votre ancienne base de données pour structurer les exigences de version en cours de correspondance telles que l'ajout / des colonnes d'abandon, la convertissage de la ligne de rangée ou même l'abandon de l'ancien dB complètement et la créer à partir de zéro. - Pour Android, peu importe ce que vous faites ici - il s'agit simplement d'une sorte de rappel d'urgence pour votre code pour faire le travail nécessaire (le cas échéant). Vous devez être conscient que les utilisateurs ne peuvent pas mettre à jour fréquemment, vous devez donc toujours gérer la mise à niveau de la version X à Y sachant que X peut ne pas être égal à I.e. (Y-1). p> onpgrade () code> est appelé (vous ne l'appelez pas vous-même) lorsque la version de votre DB a changé, ce qui signifie que la structure de table sous-jacente a changé, etc. P>
Je remarque que Onpgrade prend deux paramètres INT: Ouvrversion et Newversion. Donc, si j'ai dans mon application, la base de données de la version 1 et de l'APK téléchargé contient une base de données à la version 2, cela permet au système d'appeler la méthode automatiquement sur upgrade ()?
Comme suggéré dans
Oui. Le numéro de version est juste int code>, afin que vous puissiez faire un commutateur régulier / case code>. Ce qui est important, c'est que vous devez par exemple la mise à niveau de la version 2 à 3 mais aussi de 1 à 3 (je voudrais probablement simplement vous en boucher et la mise à niveau de 1 à 2, puis de 2 à 3), ce qui serait probablement Soyez plus simple que de manipuler la mise à jour directe de 1 à 3 (ou de 1 à 80 pour donner une perspective plus large)
Si vous utilisez le SQLITEOPENHELPER, l'ONUPGrade sera appelé chaque fois que vous modifiez la version DB. Il y a une exigence supplémentaire à laquelle cela fonctionne. Le nom de base de données doit rester identique.
public static final class MySQLiteOpenHelper extends SQLiteOpenHelper {
public MySQLiteOpenHelper(Context context, int dbVersion, String dbName) {
super(context, dbName, null, dbVersion);
}
@Override
public void onCreate(SQLiteDatabase db) {
//Code to create your db here
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Code to upgrade your db here
}
}
j'ai trouvé cela très utile https://thebhwgroup.com/blog/how-android-sqlite-onupgrade
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) {
db.execSQL(DATABASE_ALTER_TEAM_1);
}
if (oldVersion < 3) {
db.execSQL(DATABASE_ALTER_TEAM_2);
}
}