SQLiteOpenHelper.OnUpgrade(SQLiteDatabase, Int32, Int32) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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.
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.