begin process at 2008 07 07 02:59:11
1 205 881 membres
32 nouveaux aujourd'hui
14 120 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : fermer connexion MySQL [ Base de données / MySQL ] (manik971)

fermer connexion MySQL le 06/05/2008 14:15:53

manik971
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 :
[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
[/code]

*** 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
[/code]

Merci à vous d'avance.

Re : fermer connexion MySQL le 06/05/2008 17:22:26

aserf
Salut,
Pourquoi tu ne fait pas une connexion global et tu reste connecter ?
a++
seb


Développement Rapide PHP / VBNET -> www.database2code.com


Re : fermer connexion MySQL le 07/05/2008 11:06:17

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

[code]
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()
[/code]

Va savoir pourquoi

Re : fermer connexion MySQL le 07/05/2008 14:43:56

aserf
Salut,
je ne voie null par une requette "insert" dans ton code ?
a++
seb


Développement Rapide PHP / VBNET -> www.database2code.com


Re : fermer connexion MySQL le 09/05/2008 10:33:11

manik971
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


Classé sous : connection, mysql, data, mysqlclient, selectcommand

Participer à cet échange

Pub



Appels d'offres

Realisation graphique ...
Budget : 700€
WEB DESIGN
Budget : 1 000€
Plugin Dialer outlook
Budget : 2 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS