SQLiteOpenHelper.OnUpgrade(SQLiteDatabase, Int32, Int32) Méthode

Définition

Appelé lorsque la base de données doit être mise à niveau.

[Android.Runtime.Register("onUpgrade", "(Landroid/database/sqlite/SQLiteDatabase;II)V", "GetOnUpgrade_Landroid_database_sqlite_SQLiteDatabase_IIHandler")]
public abstract void OnUpgrade(Android.Database.Sqlite.SQLiteDatabase? db, int oldVersion, int newVersion);
[<Android.Runtime.Register("onUpgrade", "(Landroid/database/sqlite/SQLiteDatabase;II)V", "GetOnUpgrade_Landroid_database_sqlite_SQLiteDatabase_IIHandler")>]
abstract member OnUpgrade : Android.Database.Sqlite.SQLiteDatabase * int * int -> unit

Paramètres

db
SQLiteDatabase

Base de données.

oldVersion
Int32

Ancienne version de la base de données.

newVersion
Int32

Nouvelle version de la base de données.

Attributs

Remarques

Appelé lorsque la base de données doit être mise à niveau. L’implémentation doit utiliser cette méthode pour supprimer des tables, ajouter des tables ou faire autre chose qu’elle doit mettre à niveau vers la nouvelle version du schéma.

La documentation SQLite ALTER TABLE est disponible ici. Si vous ajoutez de nouvelles colonnes, vous pouvez utiliser ALTER TABLE pour les insérer dans une table dynamique. Si vous renommez ou supprimez des colonnes, vous pouvez utiliser ALTER TABLE pour renommer l’ancienne table, puis créer la table, puis remplir la nouvelle table avec le contenu de l’ancienne table.

Cette méthode s’exécute dans une transaction. Si une exception est levée, toutes les modifications sont automatiquement restaurées.

<em>Important :</em> Vous ne devez pas modifier une étape de migration existante de la version X vers X+1 une fois qu’une build a été publiée contenant cette étape de migration. Si une étape de migration a une erreur et qu’elle s’exécute sur un appareil, l’étape ne se réexécutera pas à l’avenir si un correctif est effectué à l’étape de migration.

Par exemple, supposons qu’une étape de migration renomme une colonne de base de données à partir de foo laquelle le nom doit avoir été baz.bar Si cette étape de migration est publiée dans une build et s’exécute sur l’appareil d’un utilisateur, la colonne est renommée baren . Si le développeur modifie par la suite cette même étape de migration pour modifier le nom comme baz prévu, les appareils utilisateur qui ont déjà exécuté cette étape auront toujours le nom bar. Au lieu de cela, une nouvelle étape de migration doit être créée pour corriger l’erreur et la renommer barbaz, ce qui garantit que l’erreur est corrigée sur les appareils qui ont déjà exécuté l’étape de migration avec l’erreur.

Java documentation pour android.database.sqlite.SQLiteOpenHelper.onUpgrade(android.database.sqlite.SQLiteDatabase, int, int).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

S’applique à