Mise à jour ORMLite de la base de données
Je suis en train de développer une application qui utilise ORMLite de la bibliothèque (qui est magnifique d'ailleurs) mais je suis un débutant en l'utilisant.
J'ai une question à propos de la mise à jour de la base de données à l'intérieur de l'appareil.
Disons que quelqu'un téléchargez mon application sur le Google Play. Quelques mois plus tard, je vais certainement remplir certaines tables avec de nouvelles entrées.
Lorsque cette personne est en train de faire une mise à jour de l'application, comment puis-je mettre à jour la base de données avec mes nouvelles entrées et de garder les anciens à l'intérieur.
Pour être plus clair, imaginons que l'utilisateur a répondu à des questions dans mon application. Quand je vais introduire de nouvelles questions, comment puis-je les insérer dans la base de données quand il les mises à jour de mon application et de garder les questions qui ont déjà obtenu une réponse ?
source d'informationauteur Alexis C.
Vous devez vous connecter pour publier un commentaire.
L'idée est d'utiliser le numéro de version qui est passée à la
onUpgrade(...)
méthode. Avec ORMLiteleOrmLiteSqliteOpenHelper.onUpgrade(...)
méthode prend unoldVersion
etnewVersion
nombre. Ensuite, vous pouvez écrire le code de conversion dans votre application qui est capable de convertir les données de l'ancien format et de mettre à jour le schéma.Pour plus d'informations, voir la ORMLite docs sur le sujet:
De devis, vous pourriez faire quelque chose comme ce qui suit:
Si vous avez des données que vous avez besoin de convertir ensuite, vous devez effectuer les conversions en SQL si possible.
Une autre solution serait d'avoir un
Account
entité et uneOldAccount
entité qui pointent vers la même table-nom. Ensuite, vous pouvez le lire dansOldAccount
entités à l'aide de laoldAccountDao
convertirAccount
entités, puis de les mettre à jour à l'aide de laaccountDao
retour à la même table. Vous devez être prudent au sujet de l'objet caches ici.Je faire de cette façon:
Cela permettra de mettre à jour les utilisateurs db indépendant à partir de laquelle db version, il est à venir.
Peu d'informations, n'est pas clair si les modifications de structure de table.
a) Si vous ne modifiez pas la structure de base de données.
1 Dans la nouvelle version de votre programme lorsque vous commencez à regarder une version précédemment enregistrée (par exemple dans les préférences)
avec le courant (voir PackageManager.getPackageInfo)
enregistré = 0 Utilisateur viens d'installer la nouvelle version
sauvé < courant de l'Utilisateur des mises à jour de votre programme
2 Ajouter de nouvelles données à la base de
3 Enregistrer la version actuelle sur les préférences
b) Si la structure de la table a été modifié (ajout ou suppression de champs)
1 incrémenter le numéro de version de votre base de données (voir votre étend OrmLiteSqliteOpenHelper classe)
2 Lorsque l'utilisateur exécute tout d'abord dans votre programme, la méthode 'onUpgrade' sera appelée (dans votre étend OrmLiteSqliteOpenHelper classe) qui sera transféré à l'ancien et le nouveau numéro de version.
Je n'aime pas à déposer de la base de données à chaque mise à niveau, ou d'écrire un code de mise à jour après l'ajout de chaque champ, donc ...
Je suis en train de faire comme ceci:
J'espère que ce code peut être mieux.
Ici, je n'ai pas supprimer les anciennes tables et les colonnes qui ont été retirés de dao, et je n'ai pas créer étrangers champs (je ne sais pas si j'en ai besoin).