Quelle est la meilleure pratique pour mettre à jour le schéma de base de données? Je pourrais envoyer un fichier texte avec les commandes SQL. L'application pourrait vérifier le fichier texte et exécuter les commandes nécessaires. Je suppose que j'aurai un drapeau pour indiquer que la mise à jour a été faite. Je n'ai pas trouvé un moyen de supprimer un fichier dans le dossier d'actif de l'application, qui serait la meilleure chose à faire après la mise à jour de la DB. p>
Toutes les pensées à ce sujet? P>
4 Réponses :
Quelle est la meilleure pratique pour mettre à jour le schéma DB? P> blockQuote>
Utiliser
sqliteopenhelper code>. La seule fois que vous mettrez à jour votre schéma, c'est lorsque vous mettez à jour l'application. Que vous ayez les commandes SQL dans un fichier que vous avez lu ou simplement dans votre code Java est à vous de vous. P>Je suppose que j'aurai un drapeau pour indiquer que la mise à jour a été faite. P> blockQuote>
qui fait partie de ce que
sqliteopenhelper code> vous donne. p>Je n'ai pas trouvé un moyen de supprimer un fichier dans le dossier d'actif de l'application, ce qui serait la meilleure chose à faire après la mise à jour de la DB. P> blockQuote>
Ce n'est pas possible, désolé. p>
Vous voudrez probablement remplacer
onUpdate(SQLiteDatabase db,int old Version,int newVerison)
Cela semble bon mais que se passe-t-il si un utilisateur ne met pas à jour et passe quelques versions. Alors supposant qu'ils ont la version 1. Tout va bien. J'utilise l'ONUPDate () sur la version 2. Tout est bon ici et je peux mettre dans les commandes SQL dans le code. Ensuite, la version 3 vient, j'explique les dernières mises à jour et les nouvelles, je suppose. C'est tout bien sauf que ce qui arrive à la personne qui n'a jamais eu la version 2?
@Mark WoreNop: votre ONUPDate () code> doit gérer tous les scénarios. Donc, si vous avez des révisions de schéma 1, 2 et 3, et que vous devez passer de 1 à 3, une solution consiste à appliquer le changement de 1-> 2, puis le changement 2-> 3.
Comme @commonsware Sir mentionné, dans ONUPDate () CODE> Méthode Nous devrions considérer toutes les conditions I.E. 1 -> 2, 1 -> 3, 2 -> 3 parce que nous ne devrions pas supposer que tous les utilisateurs ont la dernière version
Comme mentionné des autres, le Sqliteopenhelper est la chose que vous commencez par. p>
Selon votre environnement et vos exigences, Liquibase peut valoir un coup d'œil. Il permet d'écrire vos relevés de mise à jour de manière plus structurelle et est plus facile à utiliser que les opérations SQL simples. Je ne l'ai pas utilisé pour Android, cependant. P>
Si vous souhaitez mettre à jour le schéma DB, utilisez le code suivant dans votre classe étendue SQLITEOPENHELPER. Cela mettra à jour la structure de la table et ne perdra jamais vos données sauvegardées à partir de DB,
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
if (oldVersion < newVersion)
{
db.execSQL("ALTER TABLE " + "TABLE_NAME" + " TO " +
"NEW_TABLE_NAME");
db.execSQL("ALTER TABLE " + "TABLE_NAME" + " ADD COLUMN " +
"FIELD_NAME" + " INTEGER;");
}
}