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

VB.NET Discussion :

Recharger Fichier AppConfig section connectionString


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Points : 57
    Points
    57
    Par défaut Recharger Fichier AppConfig section connectionString
    Bonjour,

    J'ai une combobox dans un formulaire de connection qui me permet de sélectionner la base de donnée de travail. Il y a environ une cinquantaine de tables contenues dans un Dataset et par conséquent autant de tableadapter.

    En fonction de la sélection dans la combobox je défini des variables String pour les Server, Base, User et Mot de passe pour construire la chaîne de connection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub SetConnection(Cle As String, Server As String, Base As String, User As String, Mdp As String)
    Dim MaCon As New MesConnections
    Dim ConStr As String = MaCon.ConnBuilder(Frm, Server, Base, User, Mdp)
     
           Public Function ConnBuilder(Server As String, Base As String, User As String, Mdp As String)
           Dim ConBuild As New SqlConnectionStringBuilder With {
                    .DataSource = Server,
                    .InitialCatalog = Base,
                    .UserID = User
                }
                If Mdp <> "" Then
                    ConBuild.Password = Mdp
                End If
                Return ConBuild.ConnectionString
    Que je test ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If MaCon.Test_Connexion(Frm, ConStr) = True Then
           Public Function Test_Connexion(Frm As Forms.MetroForm, StrCon As String)
           Dim Con As New SqlConnection(StrCon)
                Con.Open()
                If Con.State = ConnectionState.Open Then
                    Con.Close()
                    Return True
                End If
                Return False
           End Function
    Puis je mets à jour MonAppli.exe.config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If MaCon.Test_Connexion(Frm, ConStr) = True Then
                    Dim Config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
                    Config.ConnectionStrings.ConnectionStrings(Cle).ConnectionString = ConStr
                    Config.ConnectionStrings.ConnectionStrings(Cle).ProviderName = "System.Data.SqlClient"
                    Config.Save(ConfigurationSaveMode.Modified)
    Jusque là, tout va bien, le fichier se met à jour correctement. Je ferme mon application, je la relance et je peux travailler avec la bonne base de donnée.
    C'est donc là le problème. Pour pouvoir travailler, il faut fermer et relancer l'application pour prise en compte des changements. Je souhaiterais savoir comment faire pour recharger la section connectionString. Après d'assez longues recherches, j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConfigurationManager.RefreshSection("connectionStrings")
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConfigurationManager.RefreshSection("appSettings")
    Mais rien n'y fait.
    Si quelqu'un pouvait me mettre sur la voie, ce serait bien apprécié..

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Il suffit de conserver ta chaîne de connexion en mémoire.

  3. #3
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Points : 57
    Points
    57
    Par défaut
    Bonjour,
    C'est ce que je fais pour l'instant. J'instancie un Objet "Compagny" lors de la sélection de la base de donnée auquel je renseigne la propriété ConnectionString de l'objet. Mais cette méthode oblige ensuite à :
    - Renseigner les TableAdapterManager de chaque formulaire
    - Et les tableAdpater de chaque SqlView contenue dans le Dataset. C'est une source d'erreur que j'aurai bien aimé supprimer.

    Merci quand même

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Je ne comprends pas.
    Si la connexion de tes TableAdapter est basée sur cette chaîne en mémoire et que tu remplace la chaîne une fois ta base choisie, ils en bénéficient de manière automatique.

  5. #5
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Points : 57
    Points
    57
    Par défaut
    Malheureusement, pour pouvoir bénéficier de la modification, je dois redémarrer l'application qui reprend alors les paramètres modifiés. Ils ne le sont pas de manière instantanée et cela m'oblige à modifier la propriété "connection.connectionString" de chaque TableAdapterManager et chaque sqlvue, ci dessous mon appconfig au cas où....
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <connectionStrings>
        <add name="MM_Management_Studio.My.MySettings.MyConStr" connectionString="Data Source=MonServerAppli;Initial Catalog=MaBase1;User ID=sa"
          providerName="System.Data.SqlClient" />
        <add name="MM_Management_Studio.My.MySettings.ComptaConStr" connectionString="Data Source=MonServerCompta;Initial Catalog=MaBase2;User ID=sa"
          providerName="System.Data.SqlClient" />
        <add name="MM_Management_Studio.My.MySettings.GroupeConStr" connectionString="Data Source=MonServerGroupe;Initial Catalog=MaBase3;User ID=sa"
          providerName="System.Data.SqlClient" />
      </connectionStrings>

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Ce que je comprend de ta demande, c'est que
    1 : tu garde des chaines de connexions dans un fichier de config
    2 : tu as un écran d'accueil qui te permet de changer de bases
    3 (option A) : tu ne change pas de bases et ça utilise ce qui est dans le fichier de config
    3 (option B) : tu choisis d'autres bases, ça modifie le fichier de config mais tu est obligé de redémarrer l'appli et passer par l'option A.

    Si j'ai bien compris alors :

    Il faut un objet pour encapsuler
    - les chaines issues du fichiers de config
    - les chaines issues de ton écran de choix
    - un booléen pour dire quelles chaines doivent être utilisée (donc soit celles du fichier, soit celles de l'écran)
    - une méthode GetCurrentConnectionString pour renvoyer la bonnes chaine de connexion suivant le booléen.

    Et baser enfin baser toutes les connexion de tes TableAdapter sur le retour de méthode GetConnectionString

    Si, je n'ai pas compris ta demande, essaie de la reformuler.

  7. #7
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2018
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2018
    Messages : 84
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par popo Voir le message
    Si, je n'ai pas compris ta demande, essaie de la reformuler.
    Bonjour,

    Tu as bien compris la demande et c'est sur la suite que je flanche
    Citation Envoyé par popo Voir le message
    baser toutes les connexion de tes TableAdapter sur le retour de méthode GetConnectionString
    Merci

Discussions similaires

  1. [Débutant] Est-ce possible de se passer du fichier appConfig ?
    Par thomaas dans le forum Entity Framework
    Réponses: 14
    Dernier message: 23/05/2012, 16h21
  2. gerer le fichier appconfig
    Par Brialex dans le forum VB.NET
    Réponses: 8
    Dernier message: 22/03/2011, 22h22
  3. Recharger fichiers xml par httpservice
    Par cocacola0589 dans le forum Flex
    Réponses: 12
    Dernier message: 18/05/2009, 17h59
  4. [VB 2005]fichier app.config & connectionstring
    Par Kropernic dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/06/2008, 18h05
  5. Réponses: 2
    Dernier message: 23/03/2007, 14h00

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