Je vous propose aujourd’hui de voir comment interagir avec une base de données, c’est-à-dire créer, lire, modifier et supprimer des données.
Ce tuto est valable pour la plupart des projets .NET classiques comme Windows Forms, WPF et ASP.NET. Cependant il est à noter que pour des projets de type Silverlight, vous devez créer un WebService WCF à coté pour interroger la base de données
Pour MySQL ou Oracle, il vous faudra télécharger des fichiers. L’intégration à Visual Studio se fait ensuite de manière automatique.
- Télécharger MySQL Connecter/Net
- Oracle Data Provider (ODP.NET)
Une fois la référence trouvée dans la liste et ajoutée au projet, il vous faut l’indiquer dans vos pages avec la directive using.
Nous allons n’utiliser que des objets pour interroger la base. Ceux que je vais utiliser à la suite de ce tutoriel sont ceux prévus pour SQL Server. Voici un tableau de chaque objet avec leur équivalent pour les autres SGBD.
On va utiliser l’objet SqlConnection pour établir une connexion à la base de données. On envoi à cet objet la chaîne de connexion puis on tente d’établir la connexion. En cas d’erreur, on affiche un message ainsi que l’erreur retournée.
Bien entendu, vous pouvez changer la requête INSERT par une requête UPDATE ou DELETE, la façon de faire restant inchangée.
Petit conseil: faîtes un TRY CATCH afin de gérer l’exception en cas de non exécution de la requête.
Ce tuto est valable pour la plupart des projets .NET classiques comme Windows Forms, WPF et ASP.NET. Cependant il est à noter que pour des projets de type Silverlight, vous devez créer un WebService WCF à coté pour interroger la base de données
A télécharger:
Selon le SGBD que vous souhaitez utiliser, certains composants seront à télécharger. Pour SQL Server ou SQL Server Compact, tout est intégré nativement.Pour MySQL ou Oracle, il vous faudra télécharger des fichiers. L’intégration à Visual Studio se fait ensuite de manière automatique.
- Télécharger MySQL Connecter/Net
- Oracle Data Provider (ODP.NET)
Avant de commencer:
Intégrez la référence à votre projet. Pour ce faire, faites un clic droit sur le nom de votre projet et choisissez dans le menu contextuel « Ajouter une référence ». (Conseil: rangez en ordre alphabétique et tapez le nom du SGBD)Une fois la référence trouvée dans la liste et ajoutée au projet, il vous faut l’indiquer dans vos pages avec la directive using.
1 2 3 4 | using System.Data.SqlServer; // SQL Server using Mysql.Data.MySqlClient; // MySQL using Oracle.DataAccess.Client; // Oracle using System.Data.SqlServerCe; // SQL Server Compact |
SQL Server | MySQL | Oracle | SQL Server Compact Edition |
SqlConnection | MySqlConnection | OracleConnection | SqlCeConnection |
SqlCommand | MySqlCommand | OracleCommand | SqlCeCommand |
SqlDataReader | MySqlReader | OracleReader | SqlCeReader |
1) Connexion à la base de données:
Pour ce cas, nous allons imaginer une application qui tente de se connecter à une base sous SQL Server. Celle-ci contiendra une liste de couleurs, identifiées par un code et un nom.On va utiliser l’objet SqlConnection pour établir une connexion à la base de données. On envoi à cet objet la chaîne de connexion puis on tente d’établir la connexion. En cas d’erreur, on affiche un message ainsi que l’erreur retournée.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Connexion à la BDD SqlConnection wConnexion = new SqlConnection(); wConnexion.ConnectionString = "Database=BaseDeDonnees;Data Source=localhost;User Id=root;Password=password" ; // Tenter la connexion sinon afficher un message d’erreur try { wConnexion.Open(); } catch (Exception ex) { MessageBox.Show( "Impossible d'ouvrir la connexion !" ); MessageBox.Show(ex.Message); } |
2.1) Lire des données:
Nous allons lister toutes nos couleurs dans un ComboBox. Dans un premier temps, nous allons instancier un objet SqlCommand, mais pas de la façon habituelle avec le mot-clé new. Celui-ci sera créé à partir de l’objet SqlConnection et va nous permettre d’exécuter une requête SQL. En second temps, on va instancier un autre objet SqlDataReader, qui sera créé cette fois-ci à partir de l’objet SqlCommand, qui va nous permettre de lire les données.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using (wConnexion) { // Instancier l’objet Command using (SqlCommand wCommand = wConnexion.CreateCommand()) { // Définition de la requête wCommand.CommandText = "SELECT * FROM COULEUR" ; // Lecture des résultats using (SqlDataReader wReader = wCommand.ExecuteReader()) { // Remplir le combobox while (wReader.Read()) { string wItem = wReader[ "NOM_COULEUR" ].ToString(); ComboBox1.Items.Add(wItem); } } } } |
2.2) Filtrer les résultats avec le mot WHERE:
Si vous souhaitez filtrer les résultats en utilisant le mot-clé WHERE, il suffit de passer des paramètres. On utilise la méthode Parameters.AddWithValue() de notre objet SqlCommand: le 1er terme va être remplacé par le second. Par habitude, on indique que le texte remplacé commence par @. Par exemple dans notre cas, @CODE sera remplacé par 3.1 2 3 4 5 | int codeCouleur = 3; // Définition de la requête wCommand.CommandText = "SELECT * FROM COULEUR WHERE CODE_COULEUR = @CODE" ; wCommand.Parameters.AddWithValue( "@CODE" , codeCouleur); |
3) Créer/Modifier/Supprimer des enregistrements:
Cette fois-ci, nous n’avons pas besoin de SqlDataReader car nous avons juste besoin d’exécuter une requête SQL qui ne retourne aucun résultat.1 2 3 4 5 6 7 8 9 10 11 12 13 14 | using (wConnexion) { // Instancier l’objet Command using (SqlCommand wCommand = wConnexion.CreateCommand()) { // Définition de la requête wCommand.CommandText = "INSERT INTO Couleur (Code, Nom) VALUES (@CODE, @NOM)" ; wCommand.Parameters.AddWithValue( "@CODE" , 1); wCommand.Parameters.AddWithValue( "@NOM" , "violet" ); // Exécution de la requête wCommand.ExecuteNonQuery(); } } |
Petit conseil: faîtes un TRY CATCH afin de gérer l’exception en cas de non exécution de la requête.
Aucun commentaire:
Enregistrer un commentaire