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

C# Discussion :

MySQL - Fermeture/Destruction de connection incorrect


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut MySQL - Fermeture/Destruction de connection incorrect
    Bonjour,

    je realise une libraire pour gerer divers Serveur

    voici un apercu de mes classes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CatalogueConnexion
    Permet de gerer nos connexion
     
    Les connexions sont contenus dans un HashTable
     
    Des fonctions standard sont presente(ajout, suppression, fermeture)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Connexion
    Represente une connexion
     
    La connexion est de type IDbConnection (connection generique)
     
    Des fonctions standard sont presente(open, close, executerSQL)

    depuis un projet WindowsForm j'instanci un CatalogueConnexion et j'ajoute une connexion MySQL et l'ouvre avec l'utilisateur "uti_1"

    j'ouvre le GUI Administrateur de MySQL avec root et je vois bien 2 connection (root + uti_1)


    la tout est logique mais lorsque j'effectue
    le GUI Administrateur me dit que la connection est toujours active...

    je vais plus loins encore! je supprimer la connexion du catalogue et je dit que mon objet Connexion = null

    non rien a fair la connexion est toujours active....


    elle ne se detruit pas temps que je ne ferme pas l'application WindowsForm....


    j'avais deja remarquer se problème par le passer mais je ne m'était pas attarder(je me connecter puis deconnecter mais je pouvais toujours executer des requetes...)

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Ce ne serait pas à cause du pooling des connexions ? Si le pooling est activé, quand tu appelles Close, ça ne ferme pas immédiatement le lien avec la base... ça le rend seulement disponible pour être réutilisé par un nouvel objet Connection.
    Quel provider utilises-tu pour te connecter ? Odbc, OleDB, le provider MySQL natif ... ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    j'utilise le connecteur .NET MySQL 5.1 (celui fournis sur le site de MySQL)

    il faut donc que je precise pooling=false ??

    ya t-il se genre d'option a preciser sur d'autre type de connexion?? (sql serveur, access, oracle.....)

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    D'après la doc, tu peux préciser "Pooling=false" dans la chaîne de connexion. Mais je ne suis pas sûr que ce soit une bonne idée... l'ouverture d'une connexion est une opération relativement coûteuse, c'est pour ça que le pooling existe. Donc, à moins que tu aies une bonne raison de vouloir modifier ce comportement par défaut, je te conseille de ne pas y toucher

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    en fait je met en place des fonctions pour gérè des connections donc par la suite se seras juste un "true/false" a mettre a la creation


    c'est juste que pour moi quand je lui disais "Close" je penser pas quel resterais

    merci pour les infos

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 102
    Points : 68
    Points
    68
    Par défaut
    Salut,

    J'ai la même interrogation concernant la fermeture d'une connexion MySQL via une application C#.

    J'ai un code très basique ou je crée mon objet connexion, j'appelle la methode open(), puis je lance mes requêtes et finallement je voulais fermer proprement fermer la connexion MySQL avec la methode close() de l'objet connexion.
    Apparemment ça ne ferme pas la connexion. Le GUI d'administration tools m'indique que la connexion est toujours présente (en mode sleep)...

    J'ai meme essayé de mettre le code dans un block using (myConn = new MySQLConnection(...))
    {

    }

    Mais en vain...
    Bizarre que le système de pooling empêche de vouloir fermer "proprement" une connexion lorsqu'on le désire.

    J'utilise .Net 2.0, MySQL5.1, connecteur MySQL disponible sur leur site.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Xploit Voir le message
    Bizarre que le système de pooling empêche de vouloir fermer "proprement" une connexion lorsqu'on le désire..
    Le système de pooling sert précisément à :

    - rendre une connexion au pool
    - la laisser à disposition du pool de tel sorte qu'elle puisse être reprise très rapidement.

    Rappel : les concepts de pooling des connexion sont arrivés avec les applications web qui imposaient une gestion des connexions très différentes de celle qui était utilisées pour les applis "lourdes" : ouverture de la connexion à la réception du post de la page, exécution de la requête, libération de la connexion. Le pooling a été conçue pour répondre au besoin d'un cycle de vie court de la connexion vue du programme client.

    Rien de bizarre ici.


    Maintenant que le pooling est universel, on a aussi changé de philosophie sur l'utilisation des connexions dans les applis "client lourd" (et accessoirement une DAL n'a pas à connaitre du type d'application qui la consomme, d'où gestion standardisées des dites connexions).

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    et avec .dispose au lieu de .close ?

Discussions similaires

  1. Jboss MySQL impossible de se connecter
    Par naej56 dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 04/04/2008, 12h23
  2. [POO] Fermeture d'une connection SQL
    Par Anduriel dans le forum Langage
    Réponses: 2
    Dernier message: 27/08/2006, 18h17
  3. [ADO] Chaine de connection incorrecte
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/04/2006, 20h55
  4. [Delphi 2006][Mysql 4.0.24] connection impossible
    Par vincentj dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/03/2006, 16h05
  5. [jdbc][mysql][linux] pb de connection
    Par BainE dans le forum JDBC
    Réponses: 1
    Dernier message: 23/11/2004, 19h58

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