Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème connexion vers une base de donnée

    4 mars 2021 à 23:39:37

    Bonjour, 

    je fais actuellement un projet avec une base de donnée sur mon localhost

    je précise que ma base de donnée a été faite sur wampserver avec comme serveur mysql.

    j'ai créé un code ou je souhaite contrôler ma base de donnée avec une interface graphique et pour d'autre raison d'où mon choix pour C# qui répond à tout mes critères. 

    cependant, impossible de me connecter à ma base de donnée j'ai essayé de différentes manière et je n'ai récupéré que des messages d'erreur(la dernière étant : "unable to connect to any of the specified mysql hosts".

    mon objectif pour l'instant est juste de créer un bouton pour se connecter et se déconnecter 

    voici mon code: 

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

    using MySql.Data.MySqlClient;

    namespace Salle_vaccin

    {

        public partial class Form1 : Form

        {

            string connectionString = "Server=127.0.0.1;Database=salle_vaccin;Uid=user;PASSWORD=monmotdepasse";

            MySqlConnection cn;

            public Form1()

            {

                InitializeComponent();

            }

            bool Connecté = false;

            private void button1_Click(object sender, EventArgs e)

            {

                cn = new MySqlConnection(connectionString);

                if(button1.Text == "Connexion BDD")

                {

                    try

                    {

                        if (cn.State == ConnectionState.Closed)

                        {

                            cn.Open();

                            button1.Text = "Déconnexion BDD";

                            button1.BackColor = Color.Green;

                            Connecté = true;

                        }

                    }

                    catch (Exception ex) { MessageBox.Show(ex.Message);}

                }

                else

                {

                    cn.Close();

                    button1.Text = "Connexion BDD";

                    button1.BackColor = Color.Red;

                    Connecté = false;

                }

            }

        }

    }

    je suis preneur pour toute réponse svp

    merci :) 

    • Partager sur Facebook
    • Partager sur Twitter
      5 mars 2021 à 1:41:31

      Il tourne votre serveur MySql sur votre machine ?

      https://www.connectionstrings.com/mysql/

      C'est sensé être quel format de "connectionString" via à vis de la liste donnée via l'Url ci-avant ?

      Moi, je vois rien avec "PASSWORD" comme clé.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        5 mars 2021 à 7:40:55

        En effet, j ai déjà lancé l application pour que les services soient opérationnel cependant ca ne marche pas du j ai même temps sans mettre en marche les services et la c est encore pire 

        Mon serveur Mysql est sur ma machine, il est sur mon localhost.

        Je ne vois pas ce que tu veux dire avec le format connectionString

        J'avais aussi essayé sous ce format mais cela n a rien donné :

        cn = new MySqlConnection("SERVER=127.0.0.1;Database=salle_vaccin;Uid=user;Pwd=monmotdepasse");

        Au passage je viens de essayer en rajoutant le port donc d abord le port 80 puis en essayent avec le port 3306 et k ai eu comme message d erreur 

        "The type initializer for 'MySql.Data.MysqlClient.MysqlConnectAttrs' threw an exception.

        Je précise que j ai bien ajouté la référence Mysql.Data 

        • Partager sur Facebook
        • Partager sur Twitter
          5 mars 2021 à 10:16:00

          Il y avait quoi dans le message d'erreur de l'exception ?

          On ne peut pas mettre n'importe quoi dans la chaîne de connexion, elle doit correspondre au format indiqué dans la page dont j'ai donné l'URL.

          Le port 80 pour une base de données, vraiment ? :colere2:

          -
          Edité par bacelar 5 mars 2021 à 11:54:35

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            5 mars 2021 à 11:23:46

            En sortie on me dit : exception levé : 'System.TypeInitializationException' dans Mysql.Data.dll

            D après la liste la chaîne de connexion correspondrait au Mysql connecteur/Net avec un port spécifié.

            Je me rends compte en effet que le port 80 ne correspond pas à une BDD 😅. 

            • Partager sur Facebook
            • Partager sur Twitter
              5 mars 2021 à 12:03:11

              >System.TypeInitializationException

              Ca, c'est le type de l'exception, pas son message d'erreur.

              Et généralement, les exceptions, c'est un peu comme les poupées russes, il y a des exceptions dans les exceptions.

              Et c'est souvent la plus à l'intérieur qui est la plus pertinente.

              Mais un type d'exception pareil, ça sent le problème de configuration/installation, normalement.

              >la chaîne de connexion correspondrait au Mysql connecteur/Net avec un port spécifié

              Bin, celle de votre premier post, pas du tout, elle est même complètement fantaisiste. Et pour celle du second post, il n'y a pas de port spécifié (mais ça devrait fonctionner).

              Donc, comme ça sent le manque de rigueur, on est d'accord que vous utilisez celle du second post et pas cette blague du premier post ?

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                5 mars 2021 à 13:52:34

                Le problème c'est qu'il ne m'affiche pas d'erreur, a aucun moment j'ai cette fameuse notification qui pointe sur le soucis donc je peux pas te donner plus d'information. 

                bon du coup, on va faire abstraction sur le premier poste et se concentrer sur le deuxième poste avec comme programme :

                using System;

                using System.Collections.Generic;

                using System.ComponentModel;

                using System.Data;

                using System.Drawing;

                using System.Linq;

                using System.Text;

                using System.Threading.Tasks;

                using System.Windows.Forms;

                using MySql.Data.MySqlClient;

                namespace Salle_vaccin

                {

                    public partial class Form1 : Form

                    {

                        public Form1()

                        {

                            InitializeComponent();

                        }

                        MySqlConnection cn;

                        bool Connecté = false;

                        private void button1_Click(object sender, EventArgs e)

                        {

                            if(button1.Text == "Connexion BDD")

                            {

                                cn = new MySqlConnection("SERVER=127.0.0.1;PORT=3306;Database=salle_vaccin;Uid=vs;Pwd=vs");

                                try

                                {

                                    if (cn.State == ConnectionState.Closed) { cn.Open(); }

                                        button1.Text = "Déconnexion BDD";

                                        button1.BackColor = Color.Green;

                                        Connecté = true;

                                }

                                catch (Exception ex) { MessageBox.Show(ex.Message);}

                            }

                            else

                            {

                                cn.Close();

                                button1.Text = "Connexion BDD";

                                button1.BackColor = Color.Red;

                                Connecté = false;

                            }

                        }

                meme en changeant le port j'ai malheureusement le meme problème d'excpetion ...

                • Partager sur Facebook
                • Partager sur Twitter
                  5 mars 2021 à 14:25:06

                  Pensez à utiliser le bouton [</>] pour poster du code, SVP.

                  Moi, quand c'est une histoire de chaîne de connexion, je suis psychorigide, je respecte tout "à la lettre", espacement et casse (minuscule versus MAJUSCULE). Faites en autant pour éviter bien des déboires.

                  >meme en changeant le port j'ai malheureusement le meme problème d'excpetion

                  Ca, c'est parce que vous avez un code "tout pourri", no offense.

                  Je sais pas où vous avez trouvé le modèle de ce code mais ça fait plus de 15 ans qu'on ne peut plus coder aussi mal.

                  Utilisez l'instruction "using" (l'instruction, pas la directive) pour ne pas à mal gérer les déconnections.

                  ET VOUS ME VIREZ CE CATCH EXCEPTION, FISSA !!!!

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                    5 mars 2021 à 14:35:48

                    Oui monsieur, catch exception bien viré et voici la fameuse erreur :

                    FileNotFoundException : Could not load file or assembly 'System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Le fichier spécifié est introuvable.

                    je sais pas si c'est ce que vous attendiez. 
                    je ne sais exactement ce que vous entendez par utiliser le using, je ne suis pas un expert en C comme vous avez pu le remarquer :/
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 mars 2021 à 15:05:28

                      https://letmegooglethat.com/?q=using+statement+c%23&l=1
                      Et mon laïus sur les matriochka et les exceptions, c'est du poulet ?
                      Bon, c'est pas clair comme message d'erreur ?
                      Vérifiez la plateforme cible de votre projet et vérifiez que vous ciblez une version qui est installée sur votre machine et qui est compatible avec le connecteur MySql que vous avez installé.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                        5 mars 2021 à 18:27:02

                        merci de ce merveilleux lien, mais je sais faire une recherche et j'ai déjà visité ce site et comme je l'ai dit plus haut, je ne suis vraiment pas bon en C# c'est le langage que j'excelle malheureusement j'en ai besoin pour mon projet. 

                        Donc ton site ne m'eclaire pas sur la facon d'utiliser using dans mon cas présent. 

                        pour ce qui est de l'erreur avec les poupées russes je peut te fournir ca 

                        Sinon j ai bien installé NET/ connecteur qui correspond donc je ne vois pas le problème de ce coté

                        -
                        Edité par Laguias 5 mars 2021 à 18:30:07

                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 mars 2021 à 20:00:48

                          >Donc ton site ne m'eclaire pas sur la facon d'utiliser using dans mon cas présent.
                          Vous ne voyez aucun lien entre votre utilisation archaïque de votre "MySqlConnection" et les exemples qu'il donne avec "StringReader", vraiment ?
                          Faut vraiment vous faire un dessin ?
                          Virez-moi ce "cn.Close()".

                          Déjà, ouvrir une connexion, quand tous les objets d'accès aux données le font pour vous automatiquement, c'est pas très finau.
                          On va dire que c'est juste pour les tests.
                          Vous vous êtes emmerdé à faire une IHM de notification de status de connexion à la base "Connecté" en sachant que ça doit faire 30 ans qu'on ne recommande plus les connexion permanentes à la base de données pour cause de gros problème de monté en charge et de complexité complètement inutile coté client.
                          Virez-moi ce champ "cn" et tout ce qui sert à ce statu de connexion à la base complètement futile.
                          Créées une nouvelle connexion à chaque interaction avec la base, si c'est nécessaire.
                          Cela donne une meilleure monté en charge, c'est plus simple, et le framework ADO.NET s'occupe d'optimiser les performances.
                          Pourquoi cette chaîne en dur plutôt que passer par les Setting, qui formate et vraisemblablement vérifie le contenu de la chaîne.
                          Ou encore mieux, utilisez le "Server Explorer" pour qui vous la génère en Setting pour vous :
                          Mais, bon, pour ça faut avoir correctement installé MySQL et tout le toutim.
                          Et votre message d'erreur montre le contraire.
                          >j ai bien installé NET/ connecteur qui correspond donc je ne vois pas le problème de ce coté
                          Alors vous devez déjà voir votre serveur MySQL dans la fenêtre "Server Explorer" de Visual Studio, non ?
                          Si oui, utilises là pour créer directement la connexionString.
                          Sinon, bin c'est qu'il faut encore configurer correctement votre environnement VS/MySQL.
                          La petite flèche à gauche d'InnerException, c'est pas juste pour faire jolie.
                          Les messages d'erreur sont univoques, il y un problème à la création d'un objet MySqlClient parce qu'il ne trouve pas le fichier associé à "System.Management....". Pour plus de détail, la petite flèche est ton amie.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                            6 mars 2021 à 15:41:31

                            je pars sur serveur explorer et en suivant bien le protocole de l url que tu as envoyés je tombe sur un message qui est : 

                            authentification to host '127.0.0.1' for user 'vs' using method 'sha256_password' failed with message : access denied for user 'vs'@localhost (using password:YES)

                            j ai donc essayé de mettre l utilisateur vs avec le hachage du mot de passe en sha256 ne marche pas donc bon ca n'a surement rien à voir mais au moins j'ai essayé

                            • Partager sur Facebook
                            • Partager sur Twitter
                              7 mars 2021 à 19:52:38

                              Utilisez le compte que vous comptez utiliser pour votre application et vérifiez la configuration de sécurité dans MySQL.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                7 mars 2021 à 20:52:35

                                deja fais, tant pis ce sera sans espoir visiblement
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  8 mars 2021 à 2:37:42

                                  vérifiez la configuration de sécurité dans MySQL. (BIS)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                                  problème connexion vers une base de donnée

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown