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

C# Discussion :

Erreur Connexion BD [Débutant]


Sujet :

C#

  1. #1
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut Erreur Connexion BD
    Bonjour à tous

    Je suis en train d'essayer de créer un script qui a pour but de parcourir toute les lignes d'une table, de faire une vérification sur une partie de ces données et selon le résultat de faire une insertion dans une autre table.

    Ce qu'il y a c'est qu'au bout d'une centaine (grand maximum) d'opérations réussies, je me mange une exception
    Too many users (too many database sessions active)
    Je comprends bien qu'il y a un soucis et que je ne dois pas fermer correctement certaines de mes connexions à la base, donc j'ai rajouter des fermetures de connexion un peu de partout, même des inutiles je pense, du moment ou ça ne bloquait pas le fonctionnement. Et toujours la même exception.

    Donc j'aimerais que vous m'expliquiez la façon de fermer proprement les connexion à la base, car j'ai l'impression de bien le faire.

    Je met mon code en entier pour ceux qui ont le temps.

    Code c# : 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
     cmClient client = new cmClient();
            OdbcDataReader reader = client.ListeClients();
            List<int> cliids = new List<int>();
            while (reader.Read())
            {
                int numcli = int.Parse(reader[0].ToString());
                cliids.Add(numcli);
            }
            reader.Close();
            client.FermerConnexion();
            foreach (int numcli in cliids)
            {
                OdbcDataReader rdr = client.getPrestaInfosFor(numcli.ToString());
                if (!rdr.HasRows)
                {
                    client.setDefaultPrestaValues(numcli.ToString());
                    client.FermerConnexion();
                }
                rdr.Close();
                client.FermerConnexion();
            }

    Ma classe cmClient (les parties qui vous intéressent):
    Code c# : 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
    27
    28
    bdSAP bdd = new bdSAP();
     
    public OdbcDataReader ListeClients()
    	{
    		try
    		{
    		      string req = "MA" 
                          return bdd.Consult(req);
    		}
    		catch (Exception exc)
    		{
    			throw new Exception(exc.Message);
    		}
    	}
     
        }
     
        public OdbcDataReader getPrestaInfosFor(string p)
        {
            return bdd.Consult("UNE AUTRE REQUETE SELECT" );
        }
     
        public void setDefaultPrestaValues(string p)
        {
            string req = ("UNE REQUETE DINSERTION");
            bdd.MAJ(req);
            bdd.FermerConnexion();
        }

    et pour que vous ayez vraiment tous les éléments je met aussi la classe bdSap
    Code c# : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public class bdSAP
    {
    	OdbcConnection Connex = new OdbcConnection();
     
    	public bdSAP()
    	{
    	}
     
    	public void OuvrirConnexion(string user, string pass)
    	{
            string chaineConnexion = "Dsn=mondsn;uid=" + user + ";pwd=" + pass;
    		Connex = new OdbcConnection();
     
     
                    Connex.ConnectionString = chaineConnexion;
    		try
    		{
                Connex.Open();
    		}
    		catch (Exception exc)
    		{
    			throw new Exception(exc.Message);
    		}
    	}
     
     
    	public void FermerConnexion()
    	{
    		try
    		{
                if (Connex != null)
                {
                    Connex.Close();
                    Connex = null;
                }
    		}
    		catch (Exception exc)
    		{
    			throw new Exception(exc.Message);
    		}
    	}
     
    	public OdbcDataReader Consult(string sql)
    	{
    		OuvrirConnexion("user", "mdp");
    		OdbcDataReader rdr;
    		OdbcCommand cmd;
    		cmd = new OdbcCommand(sql, Connex);
    		rdr = cmd.ExecuteReader();
    		return rdr;
    	}
     
     
    	public void MAJ(string sql)
    	{
    		OuvrirConnexion("user", "mdp");
    		OdbcCommand cmd = new OdbcCommand(sql, Connex);
    		cmd.ExecuteNonQuery();
    		FermerConnexion();
     
    	}

    Je ne maîtrise pas l'intégralité du code car c'est un code que je viens tout juste de reprendre. J'attends votre aide.

  2. #2
    Membre émérite Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 823
    Par défaut
    J'ai lu en diagonal par manque de temps...
    J'ai l'impression que tu ouvres et ferme à chaque action.

    Si j'ai bien compris ton besoin, tu dois ouvrir pour la lecture (tu charges dans ton programme)fermer la connection et (tout le reste).
    tu traites par ton programme
    tu ouvres, pousse les données en base et ferme.

  3. #3
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    ah je vois ça pourrait tout expliquer, je tente de mettre ça en place et je vous tiens au courant

    Edit: tu avais raison j'ai fais comme tu avais dit : j'ai ouvert, fais les select, fermer la connexion, ouvert fais les insert fermé.

    MERCI!

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 04/04/2006, 20h36
  2. [BO5.1.3][oracle9] Erreur connexion DA0005:1010
    Par ggnore dans le forum Oracle
    Réponses: 12
    Dernier message: 04/10/2005, 14h00
  3. Erreur connexion MySQL-PHP
    Par specialfox dans le forum Installation
    Réponses: 3
    Dernier message: 27/09/2005, 19h47
  4. [CE10 Pro] Erreur Connexion SQL pour etats publiés
    Par L.nico dans le forum Connectivité
    Réponses: 1
    Dernier message: 09/12/2004, 17h16
  5. Erreur connexion mysql
    Par bodbod dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/07/2004, 09h28

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