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 :

C# et MySql sur serveur distant


Sujet :

Windows Forms

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut C# et MySql sur serveur distant
    Bonjour à tous,
    je viens de développer une application WindForm en C# et dont le serveur mySql est sur internet.
    Lors du développement l' application et la base de données étant sur mon poste de developpement je n'ai pas eu de soucis particuliés tout était OK jusqu'a ce que je comment les test en situation réel (Base de donnée sur le serveur Distant Internet) et là:
    - Temps de connection trop long
    - Souvent connection time out
    ...

    voilà mon code pour mes connections:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    using MySql.Data;
    using MySql.Data.MySqlClient;
    ....
    MySqlConnection iConn = new MySqlConnection(@"SERVER=adresse;DATABASE=dbase;UID=user;PASSWORD=Pwd");
    string query = "SELECT col FROM table WHERE conditions ";                
                    iConn.Open();
                    MySqlCommand myCmd=new MySqlCommand(query ,iConn);
                    oDr=myCmd.ExecuteReader();
    J'avoue que le resultat n'est pas du tout bon!

    Quelqu'un pourrait il éclairer ma lenterne? Pourquoi cette lenteur?

    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    personne n' a d'idée?

  3. #3
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : Juillet 2010
    Messages : 423
    Points : 1 059
    Points
    1 059
    Billets dans le blog
    1
    Par défaut Timeout
    Le timeout c' est juste le temps pendant lequel le moteur de SGBD établit une connexion avec une application quelconque.Si ce temps est dépassé alors il y a arrêt du programme.
    Tu pourrais peut être mettre la valeur de ton timeout à une valeur un peu plus grande.Par exemple
    myCmd.CommandTimeout =(x)une valeur un peu plus élevée à celle que requiert MySql.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    Citation Envoyé par landry161 Voir le message
    Le timeout c' est juste le temps pendant lequel le moteur de SGBD établit une connexion avec une application quelconque.Si ce temps est dépassé alors il y a arrêt du programme.
    Tu pourrais peut être mettre la valeur de ton timeout à une valeur un peu plus grande.Par exemple
    myCmd.CommandTimeout =(x)une valeur un peu plus élevée à celle que requiert MySql.
    Bonjour,
    à ton avis quelle est la meilleur valeur?

  5. #5
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Tu devrais penser à optimiser tes requêtes pour un résultat plus performant car augmenter le timeout pourrait ne pas être la bonne solution. Ceci parce que le temps d'exécution de la requête est étroitement lié à la quantité de données devant être traitée. Donc penses à optimiser dans un premier temps tes requêtes et aussi assures-toi que les champs te servant de critère sont bien indexés au niveau de ta base de données.

    Si malgré ces mesures, le problème persiste, alors tu pourras utiliser CommandTimeout de ton objet commande comme indiqué par landry161.
    N'oubliez pas le tag et

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur Développement Logiciel
    Inscrit en
    Septembre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur Développement Logiciel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 285
    Points : 421
    Points
    421
    Par défaut
    Citation Envoyé par callo Voir le message
    Tu devrais penser à optimiser tes requêtes pour un résultat plus performant car augmenter le timeout pourrait ne pas être la bonne solution. Ceci parce que le temps d'exécution de la requête est étroitement lié à la quantité de données devant être traitée. Donc penses à optimiser dans un premier temps tes requêtes et aussi assures-toi que les champs te servant de critère sont bien indexés au niveau de ta base de données.

    Si malgré ces mesures, le problème persiste, alors tu pourras utiliser CommandTimeout de ton objet commande comme indiqué par landry161.
    Une simple requete de selection de 3 colonnes n'est en rien à optimiser,dans mon query, je fait un "Select Nom,pass,employeur From table WHERE Critere"
    le résultat doit être quasi instantané. Une autre selection pour remplir un combo met du temps!

  7. #7
    Candidat au Club
    Homme Profil pro
    charpentier
    Inscrit en
    Décembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : charpentier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    dans le fichier my.cnf ajoute cela:
    [mysqld]

    skip-name-resolve

    En faisant cela j'ai une latence de 4 seconde en écriture et c'est pratiquement instantané en lecture.
    Pour faire mieux il faut travailler avec un thread différent pour les requète sql c'est ce que je pense faire prochainement.
    Je gère mon winform avec un datatable, j'envoie le datatable modifier dans un thread qui gère les requêtes sql en leger différé c'est plus confortable pour l'user.
    Après si tu n'avais pas de problème en local et que tu en a en distant c'est que le problème vient de la connexion donc pour moi l'optimisation du code ne changera rien.
    a part bien sure si tu boucle sur une connexion
    j'ai une box orange peut être que chez free ou un autre j'aurai moins de latence (dépend de leur pare feu). je vais faire un essais en installant le serveur chez un pote pour voir si il y a une différence.

  8. #8
    Candidat au Club
    Homme Profil pro
    charpentier
    Inscrit en
    Décembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : charpentier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    au fait n’oublie pas de redémarrer ton serveur après la manip avant de m'insulter parce que ça ne marche pas

Discussions similaires

  1. Connection MySQL sur serveur distant
    Par tony-28 dans le forum VB.NET
    Réponses: 6
    Dernier message: 20/10/2012, 18h18
  2. Connection ODBC à une base Mysql sur serveur distant
    Par Asdorve dans le forum Administration
    Réponses: 2
    Dernier message: 17/03/2011, 08h37
  3. [phpMyAdmin] Erreur d'importation d'une base MySQL sur serveur distant
    Par dAvydAv dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 10/09/2007, 16h51
  4. probleme de connection à MySql sur serveur distant
    Par carlito dans le forum Installation
    Réponses: 2
    Dernier message: 15/06/2007, 14h02
  5. jsp sur serveur distant
    Par petitelulu dans le forum JBuilder
    Réponses: 5
    Dernier message: 11/09/2003, 11h50

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