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

Windows Forms Discussion :

SqlConnect.Open() dans une boucle


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut SqlConnect.Open() dans une boucle
    Bonjour, j'ai un petit problème avec l'utilisation de SqlConnect.Open().

    Je cherche à faire une application qui se connecte toujours à la bd, donc si j'ai un échec sur SqlOpen(), alors je voudrais que mon application se reconnecte.

    Du coup j'ai fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    while ( connected == false ) 
                {
                    try
                    {
                        oConnection = new System.Data.SqlClient.SqlConnection(Form1.connectionString);
                        oConnection.Open();
                        textBox1.AppendText("Connection réussi" + Environment.NewLine);
                        connected = true;
                    }
                    catch
                    {
                        textBox1.AppendText("Connection failed" + Environment.NewLine);
                    }
                }
    Mais en fait ca marche pas parce que le SqlConnection.Open() n'attend que la premiere fois et pas les autre.
    C'est a dire, premiere fois que je rentre dans la boucle j'attend 30 sec avant de rentrer dans l'exception et ensuite il passe 300 fois dans l'exception directement sans attendre.

    Si qqun sait qqchose à propos de ca, je prend ^^

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par usbeck
    Je cherche à faire une application qui se connecte toujours à la bd, donc si j'ai un échec sur SqlOpen(), alors je voudrais que mon application se reconnecte.
    Excuse moi par avance pour se que je vais dire mais... je trouve cela idiot

    En effet, le principe avec .NET, c'est de se connecter le plus tard possible et de se déconnecter le plus tôt possible....

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut
    Je suis désolé je ne comprends pas bien ta réponse, je me suis sans doute mal exprimé.

    Je fais une application qui ne fait qu'envoyer des données à ma Base de donnée.
    Donc j'essaye de me débrouiller pour que, lors d'un échec de connexion à ma base, mon appli réessaye de se connecter par elle meme jusqu'a ce qu'elle y arrive. Et la je retombe sur mon probleme expliqué au dessus.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Au lieu d'essayer de forcer la reconnexion, tu ne devrais pas plutôt chercher pourquoi tu n'arrives pas à te connecter ?

    En effet, imagine que le serveur SQL est éteint: tu va essayer de te connecter => plantage => tentative de connexion => plantage, etc...

    Tu vas rentrer dans une boucle infinie

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par Thomas Lebrun
    Au lieu d'essayer de forcer la reconnexion, tu ne devrais pas plutôt chercher pourquoi tu n'arrives pas à te connecter ?

    En effet, imagine que le serveur SQL est éteint: tu va essayer de te connecter => plantage => tentative de connexion => plantage, etc...

    Tu vas rentrer dans une boucle infinie
    Exact cela n'a aucun interet mais si tu comptes vraiment faire cela mets un compteur et tu dis au bout de 10 echecs alors tu abandonnes la connexion sinon tu n'es pas sorti de l'auberge
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Par défaut
    Je vais essayer de répondre précisement à ta question même si effectivement tu ferais mieux de comprendre pourquoi ça ne se connecte pas et éventuellement mettre un compteur...
    D'après ce que je vois, tu recréer ta connexion à chaque fois avec un new ! Ca sert à rien donc fait ton new avant et tu met juste le Open() dans ton try.
    Essaye en mettant un Close() dans le catch.
    Tu peux également regarder si tu n'a pas une méthode PurgeStatementCache() dans oConnection que tu mettrais dans le catch.
    Ce n'est que quelques idées, rien de sûr !

    PS : en général une connection qui échoue en 30 secondes échouera à chaque fois si tu ne fais rien de plus que réessayer...
    Bon courage
    ++
    Antoine

Discussions similaires

  1. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23
  2. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 17h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

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