La déconnexion à la base de données plante

Bonjour cher tous !

Lorsque je charge mon formulaire, j'ai un timer de test (1000) pour savoir si je suis toujours connecté à la base de données ou pas.
Si j'exécute le formulaire et que la base de données est connectée, tout fonctionne impect, mais si je déconnecte, l'appli plante, puis sans quitter, si je reconnecte, tout rentre dans l'ordre...

Voici mon code, et je sollicite votre aide afin de "tuer" le processus ou autre propositions afin de remédier à ce soucis :
string connetionString = null;
            MySqlConnection cnn;
            connetionString = "SERVER=localhost; DATABASE=dbase; UID=root; PWD=;";
            cnn = new MySqlConnection(connetionString);

            try
            {
                cnn.Open();
                LBL_Conexion.Text = "Connexion à la base de données réussie !";
                cnn.Close();
            }
            catch (Exception ex)
            {
                LBL_Conexion.Text = ex.Message;
                cnn.Close();

}


Merci de votre aide,
Jaber_

4 réponses

  1. Bonjour,

    que t'affiche LBL_Conexion?

    En aparté:
    string connetionString = null; 
    
    ici = null ne sert à rien, car tant que tu n'as rien affecté à une variable de type référence elle vaut null.

    Par contre tu peux faire
    string connetionString ="SERVER=localhost; DATABASE=dbase; UID=root; PWD=;";
    

    0
    1. Le LBL_Connexion me donne
      Unable to connect to any of the specified MySQL hosts.


      Le message est correct. Mais je ne peux même pas fermer la fenêtre vu qu'il plante :s

      Si je met le code dans le Load tout va bien, mais étant donné que le Timer boucle, il plante sauf si la base est connectée.
      0
      1. Ah ! Je viens d'avoir ce message aussi :
        Reading from the stream has failed
        0
    2. Je n'utilise pas les bases de données, donc pas bien sûr de pouvoir t'aider.

      Mais
                      cnn.Open();//je me connecte
                      LBL_Conexion.Text = "Connexion à la base de données réussie !";
                      cnn.Close();//je me déconnecte
      

      dans un timer ça finit peut être par se mordre la queue.
      T'as vraiment besoin de connecter/deconnecter dans la foulée?
      0
      1. Je crois que ça bug un petit peux mais c'est 100 fois mieux que le début :
        private void timer1_Tick(object sender, EventArgs e)
                {
                    string connetionString = "SERVER=localhost; DATABASE=dbase; UID=root; PWD=;";
                    MySqlConnection cnn;
                    cnn = new MySqlConnection(connetionString);
        
                    try
                    {
                        cnn.Open();
                        LBL_Conexion.ForeColor = Color.Blue; LBL_Conexion.Text = "Connexion à la base de données réussie !";
                        cnn.Close();                
                    }
                    catch (Exception ex)
                    {
                        timer1.Stop();
                        LBL_Conexion.ForeColor = Color.Red; LBL_Conexion.Text = ex.Message;
                        cnn.Close();
                        timer1.Start();
                    }            
                }

        J'ai ajouté timer1.Stop(); puis timer1.Start(); pour qu'il fasse sa "pause".
        Le blocage est toujours présent mais supportable.

        En tout cas merci à toi de t'être encore une fois occupé de moi.
        Je débute grave et je ne te remercierai pas assez.
        0
        1. Augmente la durée du timer, c'est plus simple
          0
        2. J'avais déjà testé ça plante toujours...
          Une fois qu'il détecte qu'il n'est plus connecté, il plante jusqu'à restauration de la connexion et tout se remet en ordre :s
          0
        3. Bizarre quand même
          0