Comment faire de schéma de base de données migrations dans Android?
Est-il un moyen standard pour faire de schéma de base de données migrations sur Android? Par exemple, l'utilisateur installe la nouvelle version de mon application Android, mais la nouvelle version doit mettre à jour le schéma de base de données (et de l'essuyer à l'utilisateur de la base de données et de départ n'est pas une option!). J'ai donc besoin d'exécuter certaines instructions ALTER et/ou tables de copie de la première fois ma nouvelle version fonctionne.
- Veuillez expliquer plus en détails ce que vous comprenez en vertu du schéma de la migration? La Migration, où?
Vous devez vous connecter pour publier un commentaire.
Oui SQLiteOpenHelper a un support pour la migration entre les différentes versions de la base de données des schémas.
La mise à niveau se fait par la mise en œuvre de
Et restauration d'une précédente version est également pris en charge :
Avec un peu de réflexion, vous pouvez presque automatiser beaucoup de SQLiteOpenHelper méthodes. Jetez un oeil à ce blog http://www.greenmoonsoftware.com/2012/02/sqlite-schema-migration-in-android/
Mise à jour: j'ai rencontré quelques problèmes si la base de données mises à jour peuvent prendre un certain temps pour terminer. Jetez un oeil à cette entrée de blog pour une mise en œuvre qui fonctionne pour moi. http://www.greenmoonsoftware.com/2012/05/android-developer-how-to-safely-update-the-application-database/
À partir de la version 3.0 La voie de migration supporte maintenant les migrations de base de données sur Android. Il fonctionne avec SQLite, mais aussi avec toute autre base de données que vous souhaitez utiliser (à la mémoire de l'un, ou une base de données sur le serveur à deux niveaux pour les applications).
Migrations peuvent être écrites en SQL et Java.
Toutes les réponses ci-dessus concernant SQLiteOpenHelper sont corrects, mais ils contiennent tous une sorte de antipattern - création/modification de structure DB avec des Chaînes. Il permet à la fois de développement et de maintenance plus cher. Parfois, une migration se compose de nombreux états, certains d'entre eux peuvent être assez grande. Écrire des Chaînes de caractères, sans aucune syntaxe higlighting... eh bien, pour les petites structures, il peut fonctionner, mais pour certains plus grands que ce serait un cauchemar.
Une meilleure façon de gérer les changements de schéma serait de garder chaque script de migration dans un fichier externe et de faire SQLiteOpenHelper de onUpgrade méthode execute automatiquement, dans l'ordre approprié. Voici un article portant sur ce sujet: http://www.vertabelo.com/blog/sqlite-on-android-handling-database-structure-changes. J'espère que cette aide.
Vous pouvez améliorer défaut
SQLiteOpenHelper
avec la bibliothèque Android-Migrator, qui vous permettront d'appliquer les migrations à partir desql
fichiers androidassets
dossier.Je sais que c'est vieux, mais j'ai développé un open source eclipse plugin qui est un langage spécifique au domaine (DSL écrit avec XText), qui permet de spécifier une base de données comme une liste de migrations.
Il génère votre ContentProvider, SqliteOpenHelper et Contrat pour vous, en une API qui ressemble à une API comme les Contacts de l'API ou de l'API Médias.
J'ai écrit un guide de base qui vous aide à obtenir commencé ici http://robotoworks.com/mechanoid-plugin/mechanoid-db/
Jusqu'à présent, il prend en charge create table, create view et instructions alter table, je l'espère, à mettre pleinement en œuvre Sqlite syntaxe, le cas échéant, cette liste intérieure.
Espère que ça aide et désolé pour le spam! 🙂
yanchenko la réponse est correcte, cependant, vous voudrez peut-être jeter un oeil à Droid Migrer, qui est un cadre que j'ai écrit qui fait un usage intensif de
SQLiteOpenHelper
pour faciliter automatique SQLite migrations (comme les Rails t-il).