fermer connexion MySQL

  • Auteur de la discussion manik971
  • Date de début

manik971

Habitué
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 ( )

Voici mes fonctions :

*** fonction qui récupère la valeur retournée par un select :
Code:
'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:
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.
 

boub popsyteam

Grand Maître
Il est où le catch et le end try ? :)

(ça ne vient peut etre pas de là, mais ça me semble manquer :))
 

zeb

Modérateur
Boub>> Bof...
L'important c'est qu'on voit bien les paires Open/Close dans l'extrait de code.

A moins que la saturation ne vienne des MyAdapter1 et autres SelectCommand.

Je reste dubitatif :/
 

boub popsyteam

Grand Maître
zeb ==> justement, si ça ne vient pas de là, c'est que ça vient du reste et on a pas le reste c'est ça que je voullais dire :)
 

Freeman23

Expert
Connection = nothing c'est un peu bizzare...

Je verrai plutot un
Code:
set connection = nothing

Et plutot que faire le new dans la déclaration de variable, le faire à chaque ouverture avec un Set. Enfin si le .net fonctionne toujours comme ca.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 054
Membres
1 586 393
Dernier membre
mathhh28
Partager cette page
Haut