IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Problème de récupération des valeurs avec ConfigurationManager


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 44
    Points
    44
    Par défaut Problème de récupération des valeurs avec ConfigurationManager
    Bonjour,

    J'approfondie mes connaissances en c# grâce au tutoriel suivant

    J'en suis au début et je rencontre un problème en ce qui concerne le ConfigurationManager: lorsque je débug l'application la classe me renvoie null.
    Après avoir lu de nombreux thread tuto et autres, je n'ai rien trouvé qui puisse ressembler à mon problème. J'ai bien
    - ajouter la référence
    - le namespace.

    La classe est bien reconnu mais n'arrive pas à récupérer les valeurs de mon fichiers config ci contre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add name ="simulateurPaie"
             connectionString="Data Source=.\MSSMLBIZ;
                               AttachDbFilename=D:\dbpam.mdf;
                               Initial Catalog=dbpam;
                               Integrated Security=True;
                               Connect Timeout=30;
                               User Instance=True"
             providerName="System.Data.SqlClient" />
      </connectionStrings>
      <appSettings>
        <add key="employe"
             value="SELECT EMPLOYES.NOM_EMPLOYE, EMPLOYES.PRENOM_EMPLOYE, EMPLOYES.ADRESSE_EMPLOYE, EMPLOYES.VILLE_EMPLOYE, 
                           EMPLOYES.CODEPOSTAL, EMPLOYES.INDICE, INDEMNITES.BASEHEURE, INDEMNITES.ENTRETIENJOUR, INDEMNITES.REPASJOUR, 
                           INDEMNITES.INDEMNITECP
                    FROM   EMPLOYES INNER JOIN
                           INDEMNITES ON EMPLOYES.INDICE = INDEMNITES.INDICE
                    WHERE  SS=@SS"/>
        <add key="allEmployes"
             value="SELECT PRENOM_EMPLOYE,NOM_EMPLOYE,SS_EMPLOYE 
                    from   EMPLOYES"/>
        <add key="cotisations"
             value="SELECT CSGRDS,CSGD,SECU,RETRAITE 
                    from   COTISATIONS"/>
      </appSettings>
    </configuration>
    Et voici mon .cs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    using System;
    using System.IO;
    using System.Configuration;
    using System.Collections.Specialized;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.Data.Sql;
     
    namespace SimupaieVersion1_Form
    {
        public partial class Form1 : Form
        {
            //données du formulaire
            public string cConnexion=null;
            public string employe;
            public string allEmployes;
            public string cotisations;
            public SqlConnection con;
     
            private SqlCommand command;
     
            public Form1()
            {
                InitializeComponent();
     
                //récupération de la configuration
                try
                {
                    //recuperation des données du fichier de configuration                
                    cConnexion = ConfigurationManager.ConnectionStrings[0].ConnectionString;
     
     
                    employe = ConfigurationManager.AppSettings.Get("employe");
                    Console.WriteLine("employé: " +employe);
                    allEmployes = ConfigurationManager.AppSettings.Get("allEmployes");
                    cotisations = ConfigurationManager.AppSettings.Get("cotisations");
     
                }
                catch (SqlException SQL)
                {
                    commentaire.Text = "Erreur dans la configuration de [SimuPaie.config] " + SQL.Message;
                }
    Je ne sais plus où chercher!!!
    Quelqu'un saurait il d'où le problème peut venir??????
    Il arrive à récupérer le connectionString mais ya rien à faire pour appsettings...

    Merci d'avance

  2. #2
    Membre actif
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Points : 233
    Points
    233
    Par défaut
    T'as pas essayé un code comme celui là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Properties.Settings.Default.simulateurPaie
    Properties.Settings.Default.employe
    Properties.Settings.Default.allEmployes
    etc.

  3. #3
    Membre confirmé
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Points : 586
    Points
    586
    Par défaut
    Salut,

    sinon tu dois pouvoir faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConfigurationManager.AppSettings["employe"].ToString()
    Cela devrait marcher

    Mosco.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 388
    Points : 502
    Points
    502
    Par défaut
    Citation Envoyé par MoscoBlade Voir le message

    sinon tu dois pouvoir faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConfigurationManager.AppSettings["employe"].ToString()
    Mosco.
    Je suis d'accord avec Mosco, repere tes connection string par leur nom plutot qu'un numero, tu es sur de pas te tromper et en plus tu rends ton compte plus lisible.
    Par contre je pense que le code donnerai plutot ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ConfigurationManager.AppSettings["simulateurPaie"].ToString()
    employe est une requete, pas une connection string.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 44
    Points
    44
    Par défaut
    Merci de vos réponses...

    En fait j'ai testé avec le nom mais aussi avec l'index (par curiosité même si je sais que c'est la même chose) mais je viens de me rendre compte que lorsque je débug l'appli, la connectionStrings récupérer ne correspond pas à celle indiquée dans mon fichier de config...le fichier de configuration lu n'est pas le bon. Le problème c'est que je n'en est qu'un seul dans mon projet!

    Comment peux-t-on faire pour pointé vers le bon fichier de configuration? Je n'arrive pas à déterminer quel méthode me permet de faire cela...

    Merci de votre attention!

  6. #6
    Membre confirmé
    Profil pro
    Développeur freelance
    Inscrit en
    Août 2006
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : Août 2006
    Messages : 453
    Points : 586
    Points
    586
    Par défaut
    Regarde dans ton répertoire de Debug, si le fichier de config correspond à celui du projet.
    S il est différent, regarde dans les propriétés de ton fichier config, vérifie qu'il est recopié à chaque compilation.

  7. #7
    Membre actif
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Points : 233
    Points
    233
    Par défaut
    Fais un breakpoint et exécute ton programme. Quand, l'IDE passe en mode débogage, entre dans la fenêtre espion tapes Application. Développes les membre de cet objet global et vérifis le contenu des propriétés ExecutablePath ou LocalUserAppDataPath ou StartupPath. Ouvre l'explorateur Windows et copie colles le chemin sur la barre d'adresse. Dans le dossier ouvert, tu trouveras ton fichier .config que tu peux supprimer pour que ton application copie à sa place la nouvelle version que t'as mis à jour.
    Bonne continuation.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 44
    Points
    44
    Par défaut
    Regarde dans ton répertoire de Debug, si le fichier de config correspond à celui du projet.
    S il est différent, regarde dans les propriétés de ton fichier config, vérifie qu'il est recopié à chaque compilation.
    Effectivement, je ne demandais pas la copie a chaque compilation. Merci

    Fais un breakpoint et exécute ton programme. Quand, l'IDE passe en mode débogage, entre dans la fenêtre espion tapes Application. Développes les membre de cet objet global et vérifis le contenu des propriétés ExecutablePath ou LocalUserAppDataPath ou StartupPath. Ouvre l'explorateur Windows et copie colles le chemin sur la barre d'adresse. Dans le dossier ouvert, tu trouveras ton fichier .config que tu peux supprimer pour que ton application copie à sa place la nouvelle version que t'as mis à jour.
    J'ai supprimer et relancer l'appli mais rien n'y fais, lorsqu'il arrive à cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cConnexion = ConfigurationManager.ConnectionStrings["simulateurPaie"].ConnectionString;
    il me balance une exception "nullreferenceException - La référence d'objet n'est pas définie à une instance d'un objet." alors que ma variable est bien déclarée.

    Lorsque j'indique la meme ligne en changeant "simulateurPaie" à "0" il va me chercher une ligne exotique ne correspondant pas à ma chaine de connexion

    Sur vos conseils, je reste évidemment sur l'indice "simulateurPaie"... Mais comment lui indiquer le bon chemin du fichier SimuPaie.config????

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 44
    Points
    44
    Par défaut
    Quel est le parametre à indiquer pour "action de génération" du fichier de configuration (dans les propriétés)??

    Moi j'ai "aucun". Est ce que c'est juste?

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 203
    Points : 220
    Points
    220
    Par défaut
    Il n'y a rien de spécial à faire pour copier le fichier de configuration dans le répertoire d'exécution, c'est fait automatiquement.

    Place un point d'arrêt au début du programme et lance un "Environment.CurrentDirectory" dans la fenêtre d'exécution pour voir ton répertoire de travail. Puis vérifie si le répertoire de travail contient le bon fichier de configuration.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 44
    Points
    44
    Par défaut
    tout mes chemins d'exécution sont bons...

    C'est à n'y rien comprendre... Ce que je comprends le moins c'est d'où il me sort la chaine de connexion quand je met l'index à 0????

    Votre aide me permet néanmoins de découvrir plus amplement l'environnement visual studio...

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 73
    Points : 44
    Points
    44
    Par défaut
    Après avoir cherché en vain, je me suis finalement orienté vers le linq to XML qui me semble plus souple que configurationManager...

    Je classe donc le sujet en résolu...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de récupération de valeurs avec Array
    Par l.laurent60 dans le forum Langage
    Réponses: 4
    Dernier message: 27/05/2010, 10h39
  2. Mauvaise récupération des valeurs avec $_POST
    Par Trebor_ dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2008, 10h33
  3. Réponses: 14
    Dernier message: 20/11/2007, 18h28
  4. Réponses: 2
    Dernier message: 21/09/2007, 11h37
  5. [SQL] Problème de récupération des valeurs d'une liste multiple en php
    Par BOLARD dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2006, 00h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo