Si vous cherchez un moyen de vous connecter à une base de données, je vous conseille plutôt de lire ce tutoriel sur la liaison à une base avec Entity Framework, offrant la possibilité d’interagir sans utiliser de requêtes SQL.
Je laisse juste celui-ci en ligne au cas où.
Pour en savoir plus, lisez la conclusion de ce tutoriel.
Présentation
Aujourd’hui, j’aborde l’interaction avec les base de données depuis votre application .NET : lecture, ajout, modification et suppression de données.
Ce tutoriel est valable pour la plupart pour les projets .NET (WPF, WCF, ASP.NET, Windows Forms…) ayant la possibilité de communiquer directement avec une base de données. (Je ne parlerai donc pas de Windows Phone, Windows 8, Silverlight, nécessitant un intermédiaire supplémentaire comme un webservice…)
Prérequis
Selon le SGBD que vous utilisez, des composants peuvent être à télécharger.
Pour SQL Server, tout est natif.
Voici les liens des composants pour MySQL et Oracle :
Pour les autres, je vous laisse chercher sur le net 😉
Pour commencer…
Nous allons intégrer les références à l’aide des instructions using.
SQL Server
using System.Data.SqlServer;
SQL Server Compact
using System.Data.SqlServerCe;
MySQL
using System.Data.MySqlClient;
Oracle
using Oracle.DataAccess.Client;
REMARQUE :
Si la référence est soulignée en rouge, veillez à ce qu’elle soit bien intégrée à votre projet.
Cliquez-droit sur votre projet, Ajouter une référence puis trouvez la DLL dont vous avez besoin.
Les exemples ci-dessous sont valables avec SQL Server uniquement.
Toutefois, pour un autre SGBD, il vous suffit de prendre l’équivalent en fonction de ce tableau :
SQL Server | MySQL | Oracle | SQL Server Compact Edition |
SqlConnection | MySqlConnection | OracleConnection | SqlCeConnection |
SqlCommand | MySqlCommand | OracleCommand | SqlCeCommand |
SqlDataReader | MySqlReader | OracleReader | SqlCeReader |
… et c’est parti !
Connexion à la base de données
Nous imaginons une application qui souhaite se connecter à une base SQL Server contenant une seule table
couleur { id, nom }
On établi la connexion avec un objet SqlConnection, en lui transmettant la chaîne de connexion.
// Préparation de la connexion à la base de données string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;" SqlConnection connection = new SqlConnection(connectionString); try { // Connexion à la base de données connection.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); return; }
Exécuter une requête
On utilise l’objet SqlCommand pour exécuter des requêtes SQL.
// Préparation de la requête SQL à exécuter SqlCommand command = connection.CreateCommand(); command.CommandText = "SELECT id, nom FROM COULEUR";
Lire des données
Nous allons lister toutes nos couleurs dans une ComboBox.
On se sert d’un SqlDataReader, pour boucler et lire les données.
// Lecture des résultats SqlDataReader dataReader = command.ExecuteReader(); while (dataReader.Read()) { comboBox.Items.Add(dataReader["nom"]); }
Filtrer les résultats / Passer des paramètres
Pour filtrer les résultats, on peut utiliser le mot-clé WHERE.
Afin d’avoir un code clair et sécurisé, il est recommandé de passer par des paramètres plutôt de que générer la requête en concaténant des chaînes.
On utilise AddWithValue() de la propriété Parameters de notre objet SqlCommand.
command.CommandText = "SELECT * FROM couleur WHERE id = @id"; command.Parameters.AddWithValue("@id", 3);
Créer, modifier ou supprimer des données
On utilise aussi SqlCommand.
Et étant donné que nous n’avons pas nécessité à lire des résultats, on peut utiliser la méthode ExecuteNonQuery().
// Définition de la requête command.CommandText = "INSERT INTO couleur (id, nom) VALUES (@id, @nom)"; command.Parameters.AddWithValue("@id", 1); command.Parameters.AddWithValue("@nom", "Violet"); // Exécution de la requête wCommand.ExecuteNonQuery();
Le principe reste le même pour des requêtes UPDATE ou DELETE.
Conclusion
Créez une classe spécifique pour gérer chaque table de votre base de données avec des méthodes pour lire, ajouter, modifier ou supprimer des données. Cela vous permettra de rendre le travail assez propre et vous évitera de vous mélanger les pinceaux.
Enfin, il existe un autre moyen pour interagir avec une base de données, en passant par un ORM. Ce type d’outil vous permet entre autres de générer automatiquement des objets correspondant aux éléments de votre base de données (tables, champs, colonnes…).
Cela vous permet notamment de ne plus avoir à écrire des requêtes SQL et à faciliter la maintenance de votre application.
Pour .NET, Microsoft propose Entity Framework, désormais open-source.
Je vous recommande de lire mon autre tutoriel disponible ici !
5 Commentaires
1 ping
Passer au formulaire de commentaire
Bonjour,
Je suis sur un projet en c# et je trouve que vos explications tres bien merci.
Mais j’ai une question ou je trouve pas de solution, c’est quelle est la difference entre linqto entity et entity framework?
merci a vous.
Auteur
Bonjour hsn,
Je m’excuse pour la réponse tardive.
Cet article répondra à ta demande 🙂
https://stackoverflow.com/questions/3968138/entity-framework-vs-linq-to-entities-vs-linq-to-sql
bonjour;
comment remplir un combobox a partir d’une table sqlserver?
merci d’avance.
Auteur
Bonjour, cet article vous explique comment faire. Toutefois je vous conseille de jeter un oeil à Entity Framework pour faire votre couche d’accès aux données : https://www.jbvigneron.fr/2012/06/29/csharp-base-de-donnees-entity-framework-1/
Bonjour à vous!
j’aimerais savoir comment importer un fichier EXCEL dans une base de donnée oracle sous CSHARP?
svp répondez moi c’est urgent. j’ai utiliser plusieurs méthodes mais rien ne va je suis à bout d’idée
[…] C# / Interagir avec une base de données SQL – Jean-Baptiste VIGNERON. Si vous cherchez un moyen de vous connecter à une base de données, je vous conseille plutôt de lire ce tutoriel sur la liaison à une base avec Entity Framework, offrant la possibilité d’interagir sans utiliser de requêtes SQL. Je laisse juste celui-ci en ligne au cas où. Pour en savoir plus, lisez la conclusion de ce tutoriel. Aujourd’hui, j’aborde l’interaction avec les base de données depuis votre application .NET : lecture, ajout, modification et suppression de données. […]