Tâche 7 : Mettre à jour les mots dans la base de données¶
Pour mettre à jour les mots existants, vous devez :
- Ajouter une méthode
update()àWordListOpenHelper. - Ajouter un gestionnaire de clic au bouton
EDITde votre vue.
1. Écrire la méthode update()¶
Vous utilisez la méthode update() sur SQLiteDatabase pour mettre à jour une entrée existante dans la base de données.
-
Ajoutez une méthode à
WordListOpenHelperqui : -
Prend un identifiant entier et un mot
Stringpour ses arguments et renvoie un entier. -
Initialise int
mNumberOfRowsUpdatedà-1. -
Dans un bloc
try, procédez comme suit :-
Obtenez une base de données SQLiteDatabase accessible en écriture s'il n'y en a pas déjà une.
-
Créez une nouvelle instance de
ContentValueset ajoutez-lui le motKEY_WORD. -
Appelez
db.updateen utilisant les arguments suivants :
-
-
Dans le bloc
catch, imprimez un message de journal si des exceptions sont rencontrées. -
Renvoie le nombre de lignes mises à jour, qui doit être
-1(échec),0(rien de mis à jour) ou1(succès).
Solution O_O
2. Ajouter un écouteur de clic au bouton EDIT¶
Et voici le code de l'écouteur de clic Modifier lorsque nous lions la Vue dans la méthode onBindViewHolder de WordListAdapter. Cet écouteur n'a rien de spécifique à la base de données. Il démarre l'activité EditWordActivity à l'aide d'un Intent et lui transmet l'ID, la position et le mot actuels dans les Extras.
Si vous obtenez une erreur sur la constante EXTRA_POSITION, ajoutez-la avec une valeur de "POSITION",
Solution O_O
3. Ajouter la mise à jour à onActivityResult¶
Tel qu'implémenté, cliquer sur le bouton EDIT démarre une activité qui montre à l'utilisateur le mot actuel, et il peut le modifier. Pour effectuer la mise à jour,
-
Ajoutez une ligne de code à la méthode
onActivityResultdans votreMainActivity. -
Exécutez votre application et jouez avec
4. Considérations relatives à la conception et aux erreurs¶
1. Validation des données¶
Dans ce TP, les méthodes insert(), update() et delete() sont simplifiées à des fins pédagogiques. Dans un projet réel, vous devrez :
- Vérifier que les données entrées sont valides (non vides, format correct, etc.)
- Protéger votre application contre les injections SQL malveillantes
- Ajouter des contrôles de sécurité avant toute opération sur la base de données
2. Gestion des exceptions¶
Pour l'instant, vous utilisez un bloc catch (Exception e) générique. Dans une application professionnelle, vous devriez :
- Intercepter des exceptions spécifiques (
SQLiteException,IllegalArgumentException, etc.) - Gérer chaque type d'erreur de manière appropriée
- Informer l'utilisateur des problèmes de manière claire
3. Tests de l'application¶
Vous avez testé votre application manuellement en l'exécutant. Pour un projet professionnel, il faudrait :
- Créer des tests unitaires pour chaque méthode de la base de données
- Effectuer des tests d'interface utilisateur automatisés
- Tester tous les scénarios possibles (cas normaux et cas limites)
4. Architecture du code¶
Dans ce TP, tout le code de la base de données est dans SQLiteOpenHelper. Pour une application plus complexe, il est recommandé de :
- Séparer les définitions de schéma dans une classe dédiée (contrat de base de données)
- Organiser le code de manière plus modulaire
5. Performance et threads¶
Certaines opérations sur la base de données peuvent être lentes, surtout avec beaucoup de données. Pensez à :
- Utiliser
ExecutorServicepour exécuter les opérations longues en arrière-plan - Ne jamais bloquer le thread principal (UI) avec des requêtes lourdes
- Maintenir l'application fluide et réactive
Félicitations !
Vous avez complété la tâche 7. Vous avez implémenté la méthode update() dans WordListOpenHelper et ajouté un gestionnaire de clic au bouton EDIT dans WordListAdapter.
N'oubliez pas de committer sur la branche tp-sqlite de votre dépot git local.