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

VB.NET Discussion :

fermer connexion MySQL


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur Études et développements
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Études et développements
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 22
    Points
    22
    Par défaut fermer connexion MySQL
    Bonjour,

    Mon script est en vb.net, il va récupérer des informations sur des centaines de machines, puis il les insert dans une BD mysql si il y a eut un changement depuis le dernier lancement.

    Pour chaque machines je lis la dernière entrée et je la compare a ce que je veux entrer dans la BD et si c'est différent j'insert.

    Le problème vient du fait que à chaque fois que je lis ou j'insers je me connecte et déconnecte et au bout d'environ 60 machines ça bloque car il y a trop de connexions => too many connections (http://dev.mysql.com/doc/refman/5.0/...nnections.html)

    Voici mes fonctions :

    *** fonction qui récupère la valeur retournée par un select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
                'Chaîne de connexion
                Dim paramConnect As String = "database='" & base & "';server='" & server & "';User ID='" & user & "';pwd='" & pass & "'"
     
                'Objet connection
                Dim connection As MySql.Data.MySqlClient.MySqlConnection = New MySql.Data.MySqlClient.MySqlConnection(paramConnect)
     
                'Ouverture connection
                connection.Open()
     
                'Lien entre la base et la requête1
                Dim MyAdapter1 As MySql.Data.MySqlClient.MySqlDataAdapter = New MySql.Data.MySqlClient.MySqlDataAdapter
                MyAdapter1.SelectCommand = New MySql.Data.MySqlClient.MySqlCommand(requete, connection)
                Dim S1 As MySql.Data.MySqlClient.MySqlDataReader
                S1 = MyAdapter1.SelectCommand.ExecuteReader
                S1.Read()
                recupSelect = S1.GetString(0)
     
                'Fermetures
                connection.Close()
                connection = Nothing
                S1.Close()
                S1 = Nothing
    *** fonction qui insert dans la BD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
            Dim Result As New ArrayList()
     
            'Chaîne de connexion
            Dim paramConnect As String = "database='" & base & "';server='" & server & "';User ID='" & user & "';pwd='" & pass & "'"
     
            'Objet connection
            Dim connect As MySql.Data.MySqlClient.MySqlConnection = New MySql.Data.MySqlClient.MySqlConnection(paramConnect)
     
            'normalement la requete est passée en paramètre dans la fonction
            Dim requete as string = "SELECT COUNT(id_M) FROM machine"
     
            Dim SelectCommand = New MySql.Data.MySqlClient.MySqlCommand(requete, connect)
     
            'Ouverture connection
            SelectCommand.connection = connect
     
            Try
                connect.Open()
     
                SelectCommand.ExecuteNonQuery()
     
                'Fermetures
                connect.Close()
                connect = Nothing
                SelectCommand = Nothing
    Merci à vous d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 159
    Points
    159
    Par défaut
    Moi j'utiliserais un USING/END USING pour m'assurer que les ressources sont bien libérées (Pas de prise de tête avec le Dispose dans un Try-Catch-Finally).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Using Cnx As New Data.Odbc.OdbcConnection("CnnectionString")
                Cnx.Open()
                'CODE
                Cnx.Close()
            End Using
    Tu peux aussi utiliser un Using sur les objets commande.
    La bonne habitude étant de "disposer" les objets dont tu n'as plus besoin et ça le Using te l'assure même en cas d'erreur.

    Un petit lien sur le Using sur MSDN : http://msdn.microsoft.com/fr-fr/libr...hh(VS.80).aspx

    Ensuite pourquoi ne pas utiliser la même pour faire toutes les opération (toujours avec le using) en utilisant un singleton par exemple.
    Je pense que c'est la solution la plus performante, pourquoi intancer X connection alors qu'une seule suffit.

    @+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur Études et développements
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Études et développements
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    tu sais que je t'aime toi, ça fait quelques jours que je me casse la tête sur ce problème de merde et la hop ça marche parfait, avec une petite augmentation du maxconnections de mysql ça roule quoi, merci à toi..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Doit-ont ouvrir et fermer une connexion mysql à chaque debut et fin de programme
    Par tentsuken dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/02/2010, 15h54
  2. Erreur connexion mysql
    Par bodbod dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/07/2004, 09h28
  3. Connexion mysql
    Par olive.m dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 18/06/2004, 17h44
  4. [Connexion MySQL] Can't connect to MySQL server
    Par mat_dum dans le forum Outils
    Réponses: 12
    Dernier message: 17/07/2003, 07h49
  5. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09

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