Se connecter avec
S'enregistrer | Connectez-vous

fermer connexion MySQL

Dernière réponse : dans Programmation

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/fr/too-many-connections.html)

Voici mes fonctions :

*** fonction qui récupère la valeur retournée par un select :
  1. 'Chaîne de connexion
  2. Dim paramConnect As String = "database='" & base & "';server='" & server & "';User ID='" & user & "';pwd='" & pass & "'"
  3.  
  4. 'Objet connection
  5. Dim connection As MySql.Data.MySqlClient.MySqlConnection = New MySql.Data.MySqlClient.MySqlConnection(paramConnect)
  6.  
  7. 'Ouverture connection
  8. connection.Open()
  9.  
  10. 'Lien entre la base et la requête1
  11. Dim MyAdapter1 As MySql.Data.MySqlClient.MySqlDataAdapter = New MySql.Data.MySqlClient.MySqlDataAdapter
  12. MyAdapter1.SelectCommand = New MySql.Data.MySqlClient.MySqlCommand(requete, connection)
  13. Dim S1 As MySql.Data.MySqlClient.MySqlDataReader
  14. S1 = MyAdapter1.SelectCommand.ExecuteReader
  15. S1.Read()
  16. recupSelect = S1.GetString(0)
  17.  
  18. 'Fermetures
  19. connection.Close()
  20. connection = Nothing
  21. S1.Close()
  22. S1 = Nothing


*** fonction qui insert dans la BD :
  1. Dim Result As New ArrayList()
  2.  
  3. 'Chaîne de connexion
  4. Dim paramConnect As String = "database='" & base & "';server='" & server & "';User ID='" & user & "';pwd='" & pass & "'"
  5.  
  6. 'Objet connection
  7. Dim connect As MySql.Data.MySqlClient.MySqlConnection = New MySql.Data.MySqlClient.MySqlConnection(paramConnect)
  8.  
  9. 'normalement la requete est passée en paramètre dans la fonction
  10. Dim requete as string = "SELECT COUNT(id_M) FROM machine"
  11.  
  12. Dim SelectCommand = New MySql.Data.MySqlClient.MySqlCommand(requete, connect)
  13.  
  14. 'Ouverture connection
  15. SelectCommand.connection = connect
  16.  
  17. Try
  18. connect.Open()
  19.  
  20. SelectCommand.ExecuteNonQuery()
  21.  
  22. 'Fermetures
  23. connect.Close()
  24. connect = Nothing
  25. SelectCommand = Nothing


Merci à vous d'avance.

Autres pages sur : fermer connexion mysql

Lassé par la pub ? Créez un compte
Expert Programmation

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 :/ 

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

Je verrai plutot un
  1. 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.
Lassé par la pub ? Créez un compte