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 :

Connexion SQL globale


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut Connexion SQL globale
    Bonjour,
    Voila j'ai un petit soucis. J'aimerais créer une connexion (à SQL server) globale à tout le programme.
    J'ai ma connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SqlConnection oConnexionMaBase = new SqlConnection(Ma chaine de connexion);
    oConnexionMaBase.Open();
    Je ne vois pas où l'initialiser pour qu'elle soit acccessible partout dans le programme
    Merci bp d'avance pour votre aide.
    Cédric

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Bonsoir,

    Ce n'est pas vraiment recommandé pour une question de performance, et je te le déconseille fortement.

    Mais sinon, c'est quoi comme type de programme ? Winforms, ASP. Net, autre ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Cedric33 Voir le message
    Je ne vois pas où l'initialiser pour qu'elle soit acccessible partout dans le programme
    Tu peux la déclarer comme membre statique d'une classe, et l'initialiser dans le constructeur statique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class UneClasse
    {
        public static SqlConnection oConnexionMaBase;
     
        static UneClasse()
        {
            oConnexionMaBase.Open();
        }
    }
    Mais à mon avis ce n'est pas vraiment nécessaire d'avoir une connexion accessible globalement : en effet, les connexions aux bases utilisent le pooling (à moins que tu ne le désactives explicitement dans la connection string). C'est à dire qu'un certain nombre de connexions ouvertes sont conservées dans un "pool" pour être réutilisées ultérieurement, même lorsque tu appelles Close dessus. Lorsque tu ouvres une nouvelle connexion avec la même chaine de connexion et qu'une connexion du pool est disponible, elle est réutilisée. Donc le fait de créer une nouvelle SqlConnection et d'appeler Open dessus ne causera pas réellement l'établissement d'une nouvelle connexion au serveur, ce qui évite de se préoccuper du nombre de connexions ouvertes.

    Citation Envoyé par Paul Musso Voir le message
    Ce n'est pas vraiment recommandé pour une question de performance, et je te le déconseille fortement.
    Pourquoi ça ? Je ne vois pas le rapport avec les performances... peux-tu développer ?

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Le problème de perf vient du fait que pour être thread-safe, l'accès à la connexion doit être protégé, ce qui fait que tu ne peux jamais avoir plus d'une connexion à la base en même temps. En plus, si jamais, tu prends l'habitude de faire ça en winforms, imagine ce qui va se passer le jour où tu passeras en ASP.NET : tu n'auras qu'une connexion pour tous les utilisateurs en même temps !
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut
    Merci pour vos réponses.
    C'est pour une appli Winforms. En fait je voulais créer une connexion globale afin de savoir à tout moment qui est connexion (acces concurrents).

  6. #6
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Pour savoir le nombre de connexions, tu peux mettre en place un compteur statique et protégé, et pour empécher que 2 personnes réalisent une action quelconque sur la base en même temps, tu peux utiliser un bon vieux lock (pas forcément très performant par contre, ca dépend surtout du nombre d'utilisateurs moyen).

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

Discussions similaires

  1. [C#] Problème de connexion sql server 2000
    Par rabbiwan dans le forum ASP.NET
    Réponses: 8
    Dernier message: 22/12/2004, 16h21
  2. [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
  3. Connexion à SQL Server avec ASP
    Par ayobo dans le forum ASP
    Réponses: 3
    Dernier message: 25/05/2004, 17h06
  4. Connexion SQL Server
    Par Bart51 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/05/2004, 10h49
  5. connexion sql serveur
    Par DiJiRiDouS dans le forum ASP
    Réponses: 10
    Dernier message: 16/09/2003, 16h14

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