Le framework .NET permet de communiquer avec une base de données de deux manières: connectée ou non connectée.
En mode connecté, on se connecte à la base et on exécute nos requêtes SQL directement sur la base (lecture, création, mise à jour, suppression…) en utilisant les objets Connection, Command et DataReader.
En mode déconnecté, on manipule des objets Dataset et Datatable qui représentent la structure de la base en mémoire. On les modifie en mode déconnecté puis on synchronise avec la base avec un DataAdapter.
Les systèmes de gestion de base de données sont nombreux SQL Server, MySQL…Le framework .NET permet de travailler avec tous ces systèmes sans difficulté.
Pour se connecter à la base, on aura besoin d’un objet Connection qui est créé à partir d’une connection string qui contient toutes les infos nécessaires à la connexion à la base: adresse, login, mot de passe…
Toutes les classes Connection hérite de DbConnection. La classe Connection de SQLServer, par exemple est SqlConnection. C’est elle que nous utiliserons dans les exemples de cet article.
Connection string
Vous pouvez créer vos connection string de plusieurs façons:
- Utiliser une chaîne ce caractères
string connectionString = @"Server=localhost;Database=NORTHWND;User Id=admin;Password=toto;"; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); }
- Utiliser un ConnectionStringBuilder
var connectionStringBuilder = new SqlConnectionStringBuilder(); connectionStringBuilder.DataSource = "localhost"; connectionStringBuilder.UserID = "admin"; connectionStringBuilder.Password = "toto"; using (SqlConnection conn = new SqlConnection(connectionStringBuilder.ToString())) { conn.Open(); }
- Utiliser un fichier de configuration externe
Créer un fichier de configuration app.config, par exemple, et ajouter la configuration de votre Connection string
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="conString" providerName="System.Data.SqlClient" connectionString="Server=localhost;Database=NORTHWND;User Id=admin;Password=user;"/> </connectionStrings> </configuration>
Ensuite, se connecter à la base de la manière suivante
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); }
Plus d’informations sur les connection strings connectionstrings.com
Mode connecté
Lecture des données
Pour lire les données, nous avons besoin d’une Command et d’un DataReader. La Command représente le requête SQL de sélection des données. Le Datareader stocke les résultat de notre requête. Il nous permet de lire les lignes retournées par une commande. Il va uniquement de l’avant, une fois qu’une ligne est dépassée impossible d’y revenir.
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand sqlCmd = new SqlCommand("SELECT LastName, FirstName, BirthDate FROM Employees", connection); SqlDataReader sqlReader = sqlCmd.ExecuteReader(); while (sqlReader.Read()) { Console.WriteLine($"{sqlReader["LastName"]} {sqlReader["FirstName"]} {Convert.ToDateTime(sqlReader["BirthDate"]).ToString("dd/MM/yyyy")}"); } sqlReader.Close(); sqlCmd.Dispose(); }
Mise à jour
Pour mettre à jour les données avec une requête update, delete, insert on utilise une commande également. Mais ExecuteNonQuery est utilisée à la place de ExecuteReader. ExecuteNonQuery renvoie le nombre de lignes impactées.
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["conString"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand sqlCmd = new SqlCommand("UPDATE Employees SET Region = 'NY' WHERE Region IS NULL", connection); int nbLignesModifies = sqlCmd.ExecuteNonQuery(); Console.WriteLine($"Nb lignes modifiees = {nbLignesModifies}"); }
Dans la prochaine partie, on verra comment se passe la lecture et la mise à jour des données en mode connecté.
DE LA BALLE §§§§