La modification des informations de contact dans une application peut être complexe, surtout si les données sont mal gérées.
Des erreurs de gestion des clés primaires ou des données invalides peuvent entraîner des conflits et des dysfonctionnements.
Cet article explore une méthode fiable pour modifier des contacts en utilisant SQLite et C#, garantissant la validité et l’intégrité des données.
Démarrez votre voyage en programmation C# et devenez un expert en un rien de temps.
Introduction à SQLite et C#
Défi : Dans le cadre d’une application de gestion de contacts, il est souvent nécessaire de pouvoir modifier les informations d’un enregistrement existant. Cela peut poser des problèmes si des clés primaires, comme l’ID, ne sont pas gérées correctement ou si les données saisies sont invalides. Voyons comment implémenter une fonctionnalité fiable de modification de contact en utilisant SQLite et C#.
Modifier un Contact avec SQLite en C#
Création de la méthode ModifierContact :
Une méthode sans paramètre est créée pour gérer la modification.
Elle est appelée lorsque l’utilisateur choisit l’option de modification.
public void ModifierContact()
{
// Corps de la méthode implémenté ci-dessous
}
Sélection du Contact à Modifier :
La clé primaire ID est utilisée pour éviter tout conflit entre les contacts portant des noms similaires.
La liste des contacts est affichée, puis l’utilisateur est invité à saisir l’ID du contact à modifier.
Console.WriteLine("Liste des contacts :");
ListerContacts(); // Méthode existante pour afficher les contacts
Console.Write("Entrez l'ID du contact à modifier : ");
string input = Console.ReadLine();
Validation de l'ID :
Un contrôle est effectué pour vérifier que l’ID est valide et existe dans la base de données.
if (int.TryParse(input, out int id))
{
string query = $"SELECT COUNT(*) FROM Contacts WHERE Id = {id}";
int count = ExecuteScalar(query);
if (count > 0)
{
Console.WriteLine("ID valide. Procédons à la modification.");
}
else
{
Console.WriteLine("Erreur : Aucun contact trouvé avec cet ID.");
return;
}
}
else
{
Console.WriteLine("Erreur : ID invalide.");
return;
}
Récupération des Nouvelles Informations :
L’utilisateur est invité à saisir les nouvelles valeurs pour les champs du contact.
Console.Write("Entrez le nouveau nom : ");
string nom = Console.ReadLine();
Console.Write("Entrez le nouveau prénom : ");
string prenom = Console.ReadLine();
Console.Write("Entrez le nouvel email : ");
string email = Console.ReadLine();
Mise à Jour des Données :
Une requête SQL est utilisée pour mettre à jour les informations du contact dans la base.
string updateQuery = $"UPDATE Contacts SET Nom = '{nom}', Prenom = '{prenom}', Email = '{email}' WHERE Id = {id}";
int result = ExecuteNonQuery(updateQuery);
if (result > 0)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Contact modifié avec succès.");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Erreur : Impossible de modifier le contact.");
Console.ResetColor();
}
Gestion des Erreurs et Validation Dynamique :
Le code gère les cas où :
L’ID n’existe pas.
L’utilisateur saisit des données non valides.
7. Code complet de mise à jour:
static void ModifierContact()
{
Console.Clear();
Console.WriteLine("Modification d'un contact");
// Étape 1 : Lister les contacts existants
Console.WriteLine("\nListe des contacts :");
ListerContacts(); // Utilisation de la méthode existante pour afficher les contacts
// Étape 2 : Demander l'ID du contact à modifier
Console.Write("\nEntrez l'ID du contact à modifier : ");
string input = Console.ReadLine();
// Étape 3 : Validation de l'ID
if (!int.TryParse(input, out int id))
{
AfficherMessageErreur("ID invalide.");
return;
}
// Vérification si l'ID existe dans la base
try
{
using (SQLiteConnection connection = new SQLiteConnection(cheminBDD))
{
connection.Open();
string checkQuery = "SELECT COUNT(*) FROM Contacts WHERE Id = @Id";
using (SQLiteCommand command = new SQLiteCommand(checkQuery, connection))
{
command.Parameters.AddWithValue("@Id", id);
int count = Convert.ToInt32(command.ExecuteScalar());
if (count == 0)
{
AfficherMessageErreur("Aucun contact trouvé avec cet ID.");
return;
}
}
}
}
catch (Exception ex)
{
AfficherMessageErreur($"Erreur lors de la vérification de l'ID : {ex.Message}");
return;
}
// Étape 4 : Récupération des nouvelles informations
Console.Write("\nEntrez le nouveau nom (laissez vide pour conserver l'ancien) : ");
string nom = Console.ReadLine();
Console.Write("Entrez le nouveau prénom (laissez vide pour conserver l'ancien) : ");
string prenom = Console.ReadLine();
Console.Write("Entrez le nouvel email (laissez vide pour conserver l'ancien) : ");
string email = Console.ReadLine();
// Mise à jour des données
try
{
using (SQLiteConnection connection = new SQLiteConnection(cheminBDD))
{
connection.Open();
// Construire dynamiquement la requête pour éviter de remplacer des champs non modifiés
string updateQuery = "UPDATE Contacts SET ";
bool hasPrevious = false;
if (!string.IsNullOrWhiteSpace(nom))
{
updateQuery += "Nom = @Nom";
hasPrevious = true;
}
if (!string.IsNullOrWhiteSpace(prenom))
{
updateQuery += (hasPrevious ? ", " : "") + "Prenom = @Prenom";
hasPrevious = true;
}
if (!string.IsNullOrWhiteSpace(email))
{
updateQuery += (hasPrevious ? ", " : "") + "Email = @Email";
}
updateQuery += " WHERE Id = @Id";
using (SQLiteCommand command = new SQLiteCommand(updateQuery, connection))
{
command.Parameters.AddWithValue("@Id", id);
if (!string.IsNullOrWhiteSpace(nom))
command.Parameters.AddWithValue("@Nom", nom);
if (!string.IsNullOrWhiteSpace(prenom))
command.Parameters.AddWithValue("@Prenom", prenom);
if (!string.IsNullOrWhiteSpace(email))
command.Parameters.AddWithValue("@Email", email);
int result = command.ExecuteNonQuery();
if (result > 0)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("\nContact modifié avec succès !");
Console.ResetColor();
}
else
{
AfficherMessageErreur("Erreur : Impossible de modifier le contact.");
}
}
}
}
catch (Exception ex)
{
AfficherMessageErreur($"Erreur lors de la mise à jour des données : {ex.Message}");
}
}
Résultat Final de la Mise à Jour
La modification:
Résultat de la modification:
Bénéfices :
- La modification des contacts est robuste et protégée contre les erreurs de saisie.
- L’interface utilisateur reste intuitive.
En suivant ces étapes, vous disposez d’une fonctionnalité fiable pour modifier les contacts dans une application SQLite avec C#. Pour aller plus loin, envisagez d’ajouter des tests pour valider le bon fonctionnement de chaque étape.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment modifier un contact dans une application C# utilisant SQLite?
Pourquoi utiliser l'ID comme clé primaire pour la modification?
Quels sont les bénéfices de la validation dynamique des données?
Comment gérer les erreurs lors de la mise à jour des contacts?
Comment rendre l'interface utilisateur intuitive pour la modification?
Conclusion
En suivant ces étapes, vous pouvez sécuriser la modification de contacts dans votre application. Quelles autres fonctionnalités souhaiteriez-vous explorer pour enrichir votre application de gestion de contacts?