Partage
  • Partager sur Facebook
  • Partager sur Twitter

[CS]Connexion Mysql

Trop long

Sujet résolu
    3 juillet 2011 à 12:22:56

    Bonjour,

    J'utilise le connecteur mysql avec VS.Net 2010. J'ai aucun soucis de connexion mais elle prend du temps, le programme est figé pendant 5s environ. J'aimerais savoir, si il y a un moyenne d’accélérer la connexion.

    Voici mon code :

    MySql.Data.MySqlClient.MySqlConnection conn;
                string myConnectionString;
    
                myConnectionString = "server=192.168.0.10;uid=user;" +
                    "pwd=****;database=db;";            
    
                    conn = new MySql.Data.MySqlClient.MySqlConnection();
                    conn.ConnectionString = myConnectionString;
                    conn.Open();
                    MessageBox.Show("Connexion réussie");
    


    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      3 juillet 2011 à 13:35:27

      Je ne connais pas grand chose en vb, mais je peut te dire que en php si ta connexion est lente, la connexion va être très longue.
      • Partager sur Facebook
      • Partager sur Twitter
        3 juillet 2011 à 18:48:33

        Bonsoir,

        La connexion à une base de données extérieure est considéré comme un Web Service et par conséquent l'utilisation de thread ou du wrapper BackgroundWorker permet de ne pas figer l'affichage.

        --- EDIT ---

        Voici comment procéder.

        Tout d'abord tu dois créer un timer nommé verificationConnexionMySqlTimer qui aura pour propriété Interval = 500.

        Ensuite, n'oublie pas d'inclure les espace noms de MySql.Net et de System.Threading afin d'éviter de les retaper à chaque fois :p

        Puis le système est vraiment basique, on a une fonction qui permet de se connecter à la base de données qui gère les éventuelles exceptions. Cette fonction affecte une variable qui permet de savoir si la connexion a été réussie ou non.
        Un timer vérifie l'état de la connexion, si c'est réussi on fait ce qu'on a à faire.

        La fenêtre n'est pas figé et en plus on gère les exceptions :p

        Ce n'est que des boûts de code, à toi de les placer aux bons endroits dans ton programme ;)
        // A placer dans la zone reservée aux "using". Cela permet d'eviter à retaper à chaque fois
        using MySql.Data.MySqlClient;
        using System.Threading;
        
        // Attribut à délcarer afin qu'il puisse être utilisé par toutes tes fonctions
        private MySqlConnection conn;
        private Thread ConnexionMySqlThread;
        private bool ConnexionReussie = false;
        
        // Cette fonction nous servira à alimenter notre Thread
        private void ConnexionMySql
        {
        	try{
        		string myConnectionString = "server=192.168.0.10;uid=user;" + "pwd=****;database=db;";            
        		conn = new MySqlConnection();
        		conn.ConnectionString = myConnectionString;
        		conn.Open();
        		
        		// Si la connexion a réussi, on l'indique
        		ConnexionReussie = true;
        	}
        	catch(MySqlException MySqlEx)
        	{
        		
                // On peut cibler les exceptions grâce à MySql.NET
                // Les plus courantes
                // 0 : Connexion au serveur impossible
                // 1045 : Combinaison Utilisateur/Mot de passe invalide
                switch (MySqlEx.Number)
                {
                    case 0:
                        MessageBox.Show("Connexion au serveur impossible");
                        break;
        
                    case 1045:
                        MessageBox.Show("Combinaison Utilisateur/Mot de passe invalide");
                        break;
                }
        		
        		// Si la connexion a échoué
               ConnexionReussie = false;
        	}
        }
        
        // Cette fonction permet de lancer le thread afin de se connecter
        private void LancerLaConnexion()
        {
        	ConnexionMySqlThread = new Thread(new ThreadStart(ConnexionMySql));
        	ConnexionMySqlThread.Start();
                verificationConnexionMySqlTimer.Start();
        }
        
        private void TacheAFaireApresConnexion()
        {
        	// Remplir une liste, requetes, suite du programme etc..
        }
        
        // Cette fonction permet de vérifier à l'aide d'un timer reglé à 500ms l'état de la connexion
        private void verificationConnexionMySqlTimer_Tick(object sender, EventArgs e)
        {
        	if(ConnexionReussie)
                {
        		TacheAFaireApresConnexion();
                        verificationConnexionMySqlTimer.Stop();
                }
        }
        


        Si tu n'arrives pas à comprendre ce code, je t'invite à lire le tuto intitulé Les Threads en .NET redigé par gretro :)

        En espérant t'avoir aidé, n'oublie pas le tag résolu :)
        • Partager sur Facebook
        • Partager sur Twitter
          3 juillet 2011 à 21:54:07

          Merci sa a résolu mon problème
          • Partager sur Facebook
          • Partager sur Twitter

          [CS]Connexion Mysql

          × 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