Accès aux bases de données
Fichier de configuration
Nous pouvons travailler avec une ou plusieurs bases de données dans nos applications, mais que se passe-t-il par exemple si nous décidons de déplacer la base de données? Si nous avons déclaré les paramètres de connexion (connectionString) qui contiennent le chemin d'accès à la base de données dans notre code, nous devons absolument recompiler le code. La situation est identique si nous désirons modifier le type de base de donnée (providerName) que nous utilisons.
La tendance actuelle nous pousse à externaliser nos différents paramètres de configuration de nos applications dans des fichiers (les fichiers properties en Java, les fichiers de configuration App.config en C#).
Le fichier de configuration est donc un fichier XML qui comporte l'ensemble des balises contenant les paramètres nécessaires à notre application, que nous pouvons modifier sans devoir modifier le code.
Générer un fichier de configuration
Si nous travaillons avec un éditeur de texte, nous pouvons créer un fichier App.config et introduire manuellement les balises ainsi que leurs attributs et valeurs.
Si nous avons la chance de travailler avec un IDE, ce dernier fait une partie importante du travail à notre place. Par exemple, sous Visual Studio (ou Visual Studio Express), nous pouvons procéder de la manière suivante :
- Dans l'onglet Project, sélectionnons l'option Add New Item
- Dans la fenêtre de choix de nouvel élément, nous sélectionnons Application Configuration File
Ajouter des clés et des valeurs dans le fichier de configuration
Si nous avons demandé à Visual Studio de nous générer un fichier de configuration, un document XML de base est automatiquement créé. Nous allons y placer des valeurs qui seront utilisées par notre application.
Nous pouvons placer des paires clé/valeur sous l'élément <appSettings>, sous la forme suivante :
Sous la balise <configuration>, nous allons créer un élément <connectionStrings> qui comportera un élément avec les paramètres de connexion.
Code XML (App.config) (8 lignes)
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Brol" providerName="System.Data.OleDb" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=brol.mdb"/> </connectionStrings> </configuration>
Lire les valeurs
Lorsque nous compilons le programme, un fichier exécutable est généré, ainsi qu'un fichier de configuration de même nom. Par exemple, si la classe qui contient le point d'entrée de notre application se nomme MyProgram, les deux fichiers suivants seront générés : "MyProgram.exe" et "MyProgram.exe.config".
Accéder au fichier de configuration
Avant de pouvoir utiliser le fichier de configuration, notre projet doit avoir une référence vers System.Configuration. Si ce n'est pas le cas, nous pouvons l'ajouter de la manière suivante :
- Sélectionner Project, puis Add Reference...
- Dans l'onglet .NET, sélectionner System.Configuration
Accéder aux données du fichier de configuration
Nous pouvons retrouver les éléments sous ConfigurationManager, sous la forme de tableaux.
Si nous désirons accéder à KeyValue que nous avons spécifié plus haut, nous récupérons cette valeur à l'index KeyName du tableau AppSettings que nous procure ConfigurationManager :
Si nous désirons accéder à notre chaîne de connexion :
Remarque
Nous devons être attentif à la casse :
nous avons défini notre élément appSettings dans notre fichier de configuration, mais nous récupérons un tableau AppSettings...
Exemple
Nous allons donc utiliser notre base de données de films que nous avons créé lors de notre introduction à Microsoft Access. Attention que le chemin que nous spécifions est dans le cas de cet exemple un fichier relatif : nous devons donc placer la base de données au même endroit que le fichier exécutable (Si nous le désirons, nous pouvons aussi utiliser un chemin absolu).
Code c# (Lecture DB Console) (18 lignes)
String dbName = "Brol"; String provider = ConfigurationManager.ConnectionStrings[dbName].ProviderName; //Console.WriteLine("Provider found for DB " + dbName + " : " + provider); DbProviderFactory dbpf = DbProviderFactories.GetFactory(provider); DbConnection dbCon = dbpf.CreateConnection(); DbCommand dbCom = dbpf.CreateCommand(); dbCon.ConnectionString = ConfigurationManager.ConnectionStrings[dbName].ConnectionString; dbCon.Open(); dbCom.Connection = dbCon; dbCom.CommandText = "select Titre_film from tb_films"; DbDataReader dbDReader = dbCom.ExecuteReader(); if (dbDReader != null) while (dbDReader.Read()) Console.WriteLine((String)dbDReader["Titre_film"]); dbDReader.Close(); dbCon.Close(); Console.WriteLine("Press enter to exit..."); Console.ReadLine();
Nous pouvons remarquer dans le code ci-dessus que nous ne fournissons pas explicitement le type de base de données (provider) à la fabrique de Providers, mais que nous récupérons ce dernier dans le fichier de configuration.
English translation
You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.
Thank you in advance.
Document created the 01/10/2006, last modified the 07/04/2023
Source of the printed document:https://www.gaudry.be/en/csharp-app-config.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.