Fermer connexion MySQL

manik971 Messages postés 30 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 12 juillet 2020 - 6 mai 2008 à 14:15
manik971 Messages postés 30 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 12 juillet 2020 - 9 mai 2008 à 10:33
Bonjour à tous,

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 ([url]http://dev.mysql.com/doc/refman/5.0/fr/too-many-connections.html/url)

    Voici mes fonctions :

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

4 réponses

aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011
6 mai 2008 à 17:22
Salut,
Pourquoi tu ne fait pas une connexion global et tu reste connecter ?
a++
seb

Développement Rapide PHP / VBNET -> www.database2code.com
0
manik971 Messages postés 30 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 12 juillet 2020
7 mai 2008 à 11:06
j'ai fait ce que tu as dit, je fais une connection globale au debut de mon programme, pour la fonction qui récupère le select ça marche sans problème mais pour la fonction qui insert ça marche pas, je suis obligé de fermer la connexion puis de la réouvrir pour que ca fonctionne :

Public Function envoiRequete(ByVal requete As String, ByVal connection As MySql.Data.MySqlClient.MySqlConnection) As Boolean

        Try
            Dim cmd As New MySql.Data.MySqlClient.MySqlCommand

            With cmd
                .CommandText = requete
                .CommandType = CommandType.Text
                .Connection = connection
            End With

            connection.Close()
            connection.Open()

            'si je ne ferme pas puis réouvre la connexion ça plante ici
            cmd.ExecuteNonQuery()


Va savoir pourquoi
0
aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011
7 mai 2008 à 14:43
Salut,
je ne voie null par une requette "insert" dans ton code ?
a++
seb

Développement Rapide PHP / VBNET -> www.database2code.com
0
manik971 Messages postés 30 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 12 juillet 2020
9 mai 2008 à 10:33
je passe en paramètre de la fonction la variable "requete" qui est la requête d'insertion,
et ensuite je le met dans le mysqlCommand

 With cmd
                    .CommandText = requete
                    .CommandType = CommandType.Text
                    .Connection = connection
 End With
0
Rejoignez-nous