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

VB.NET Discussion :

[OLE DB] Avoir une instance unique de connexion/pool de connexion


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut [OLE DB] Avoir une instance unique de connexion/pool de connexion
    Bonjour,

    je suis dans un cas assez critique, car ne maitrisant pas .Net (ni visual)

    Dans le cas d'utilisation de SQL Server dans une application, il m'a été demandé de créer une classe de connexion à la base de données en OLE DB, afin de n'avoir qu'une seule connexion exploitée par l'application.

    1) Comment écrire cette classe sous VB.NET ?

    2) Une seule connexion est-elle suffisante, faut-il prévoir un pool de connexion ? Dans ce cas-là la structure de la classe change radicalement, comment faudrait-il alors la concevoir ?

    Le désir au final étant de réduire au maximum le nombre de connexions faites ^^

    Je remercie les bonnes âmes qui me viendront en aide.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    tout accès aux données doit etre encapsulé dans une connexion et donc celle ci doit etre fermée tout de suite après

    si tu fais un select , tu ouvres, tu select, tu traites et tu fermes
    meme pour un update tu ouvres et tu fermes juste après

    c'est ce que microsoft recommande et ca evite des problemes

    pour que ceci soit rapide, sql serveur gère un pool de connexion pré ouvertes donc quand t'en demande une, il te la passe rapidement

    donc dans ton code, tu peux utiliser plusieurs objets sqlconnexion ou un seul de toute facon tu dois ouvrir et fermer très souvent

    réduire le nombre de connexion n'est pas forcément utile .
    et dans ton titre tu as mis ole db, hors ole db sert pour se connecter à access, toi tu dois chercher dans system.data.sqlclient (sqlconnexion sqlcommand sqldatareader etc...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Salut

    Dans le cas d'utilisation de SQL Server dans une application, il m'a été demandé de créer une classe de connexion à la base de données en OLE DB, afin de n'avoir qu'une seule connexion exploitée par l'application.
    Pourquoi utiliser OLEDB? ca ne garantira pas un nombre de connections moindre qu'avec le driver Sql

    2) Une seule connexion est-elle suffisante, faut-il prévoir un pool de connexion ? Dans ce cas-là la structure de la classe change radicalement, comment faudrait-il alors la concevoir ?
    Il faut une connection par datareader d'ouvert. Donc tout depend si tu dois avoir deux readers d'ouverts simultanement (c'est pas tres frequent)

    Le désir au final étant de réduire au maximum le nombre de connexions faites ^^
    En fait la meilleure facon d'avoir un nombre minimal de connection a la base de donnees est d'ouvrir et de refermer les connections que lorsqu'elles doivent etre utilisees
    Il existe deja un mechanisme de pooling dans ADO.Net qui garde les connections ouvertes et les reutilise (a condition que la connectionstring a la base de donnees soit strictement la meme)

    Connection pooling

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    OKi merci déjà pour ces infos, je vais aller sieuter ta page msdn ^^

    Pour OLE DB, excusez ma mauvaise formulation, je ne voulais pas dire qu'il devait être utilisé dans le sens de réduire le nombre de connexions, mais qu'il était imposé comme mode de communication (et comme j'y connais rien en VB , ça m'étonne pas de faire des amalgames ^^), et que l'application de base utilise principalement ce mode de communication.

    Dans un environnement de réplication, faudrait-il re-instancier les objets de connexion à chaque changement de serveur principal ?

    EDIT : via OLEDB, quelle sera la charge de traitement auto, et le traitement que j'aurai à implémenter ? j'imagin que le résultat du traitement sera non traitable par défaut comme objet VB ?!

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Pour OLE DB, excusez ma mauvaise formulation, je ne voulais pas dire qu'il devait être utilisé dans le sens de réduire le nombre de connexions, mais qu'il était imposé comme mode de communication (et comme j'y connais rien en VB , ça m'étonne pas de faire des amalgames ^^), et que l'application de base utilise principalement ce mode de communication.
    là j'suis pas trop au point mais il me semble que oledb sert pour access, dans vb.net il faut utiliser les objets spécifique sql server et ca se débrouille

    Citation Envoyé par Arnard Voir le message
    Dans un environnement de réplication, faudrait-il re-instancier les objets de connexion à chaque changement de serveur principal ?
    à priori non, l'objet connexion a une chaine de connexion qui précise le serveur
    au moment de connexion.open ca utilise la chaine de connexion

    mais de toute facon, des objets connexions il vous en faudra surement plusieurs

    et puis de toute facon instancier un objet ca prends pas de temps, il n'est pas obligé d'en avoir un global pour l'appli comme à l'ancienne
    un dim dans une sub suffit

    Citation Envoyé par Arnard Voir le message
    EDIT : via OLEDB, quelle sera la charge de traitement auto, et le traitement que j'aurai à implémenter ? j'imagin que le résultat du traitement sera non traitable par défaut comme objet VB ?!
    hein ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    je viens de relire la question de départ, et pourquoi voulez vous avoir une classe de connexion ?
    que doit elle faire de si différent des classes du framework pour avoir à la réécrire ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Déjà, je ne connais pas du tout le fonctionnement, je me base pour l'instant de ce qu'on a pu m'expliquer...

    Après, SqlServer est une option, mais il possible que l'on tourne aussi sous PostGreSQL. Celà dépend de l'application de base à partir de laquelle nous développons, qui utilise majoritairement OLEDB et validé pour oracle/sqlserver. postGre n'étant pas encore pris en compte, bien qu'une tentative d'implementation soit apparement prévue par l'equipe développant l'appli de base.

    Donc scénario : l'application de base se lance, execute la dll créé par moi-même pour la connexion SQL, et file cet objet à notre appli dépendante de l'appli de base.

    Sinon, pour ma dernière question apparement mal formulé, si on fait un SELECT par exemple, qu'est ce que OLE BD va me retourner au final ? Et comment le traiter ?

    Comme vous voyez j'ai vraiment peu de billes xD

Discussions similaires

  1. Créer une instance unique en C#
    Par adrianolimit dans le forum C#
    Réponses: 18
    Dernier message: 15/08/2012, 17h06
  2. [gedit] Comment faire pour avoir une instance de gedit par onglet ?
    Par Davidbrcz dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 25/06/2007, 11h58
  3. [9i] comment toujours avoir une instance dispo ?
    Par sygale dans le forum Oracle
    Réponses: 2
    Dernier message: 09/02/2007, 10h16
  4. Réponses: 1
    Dernier message: 20/06/2006, 15h11
  5. [JUnit] Avoir une seule instance
    Par hocinema dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 25/10/2005, 15h48

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