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 :

Nombre de connexion pour des lecture imbriquée de table


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 118
    Par défaut Nombre de connexion pour des lecture imbriquée de table
    Bonjour,

    J'ai le problème suivant:

    Avec VB j'accède à une table (Microsoft SQL) entête que je parcours et pour chaque ligne entête j'ai des lignes détails.
    Pour la lecture de ces tables je vais utiliser l'objet connexion puis l'objet commande puis l'objet OleDbDataReader.
    Je voudrais savoir si on peut faire ceci en ne créant qu'un seul objet connexion et l'utiliser pour les deux lecture (entête & détail) ou il en préférable de créer deux connexion car il y a quand même une lecture à l'intérieur d'une autre lecture.

    Merci à vous
    A+

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    manque de précisions dans ce que tu dis

    si tu utilises un datareader, tu ne peux pas executé de command avec le meme objet connexion tant que le reader n'est pas terminé

    de plus tu peux faire ce que tu veux en une seule requete avec une jointure
    (plutot que de faire une requete par ligne !!!)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Si pour chaque entête tu doit effectuer une requête pour récupérer les détails correspondent l'utilisation d'un datareader avec une seule connexion ne marcherais pas puisque le datareader est en mode connexion donc pour la lecture de chaque ligne il y'a un accès a la BD sauf si tu lie tout tes entête et tu sauvegarde quelque par. A mon avis tu devrais utiliser un dataset
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par lilroma Voir le message
    Si pour chaque entête tu doit effectuer une requête pour récupérer les détails correspondent l'utilisation d'un datareader avec une seule connexion ne marcherais pas puisque le datareader est en mode connexion donc pour la lecture de chaque ligne il y'a un accès a la BD sauf si tu lie tout tes entête et tu sauvegarde quelque par. A mon avis tu devrais utiliser un dataset
    Aucune raison d'utiliser un DataSet (a fortiori il me semble un peu douteux de conseiller le DataSet quand on ne connait pas la volumétrie, mais passons .... ), il lui suffit de faire une requête correctement avec une jointure.

    De plus si il travaille avec Sql Server, je ne vois pas pourquoi il utilise OleDb plutot que le client natif.

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    Bonjour jeandadaf,

    Pourrais-tu envoyer ta requete actuelle avant que les autres se batent pour savoir quelle solution est la meilleure ? Ça simplifiera peut-être les choses...

    Ceci dit, je suis d'accord avec Bluedeep sur au moins un point :
    De plus si il travaille avec Sql Server, je ne vois pas pourquoi il utilise OleDb plutot que le client natif.

  6. #6
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Aucune raison d'utiliser un DataSet (a fortiori il me semble un peu douteux de conseiller le DataSet quand on ne connait pas la volumétrie, mais passons .... ), il lui suffit de faire une requête correctement avec une jointure.
    Bluedeep lorsque je parle de Dataset c'est en comparaison avec le Datareader dans bon nombre de tutoriel il est conseille de l'utiliser au lieu du Datareader tu suppose que tous ces tutoriels sont douteux
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    Citation Envoyé par lilroma Voir le message
    Bluedeep lorsque je parle de Dataset c'est en comparaison avec le Datareader dans bon nombre de tutoriel il est conseille de l'utiliser au lieu du Datareader tu suppose que tous ces tutoriels sont douteux
    moi je veux bien le supposer en tout cas !
    déjà le dataset utilise un datareader donc c'est un surcouche, donc moins performant (voir 10x plus long dans certains cas déjà rencontrés et sur 2 secondes, 10x plus long ca fait 20 secondes et là l'utilisateur est pas forcément content)
    le dataset est conseillé pour les débutants car il sait faire plein de choses donc ils ont pas trop de questions à se poser (enfin c'est mon avis)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par lilroma Voir le message
    Bluedeep lorsque je parle de Dataset c'est en comparaison avec le Datareader dans bon nombre de tutoriel il est conseille de l'utiliser au lieu du Datareader tu suppose que tous ces tutoriels sont douteux
    Un DataSet travaille en mode déconnecté. Cela ne signifie donc pas qu'il est douteux d'utiliser un DataSet, mais douteux de conseiller son utilisation quand on ne dispose d'aucune info sur la volumétrie des données.

    Imagine que sa requête retourne un million d'enregistrement : il va avoir l'air malin avec son DataSet.

  9. #9
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    moi je veux bien le supposer en tout cas !
    déjà le dataset utilise un datareader donc c'est un surcouche, donc moins performant (voir 10x plus long dans certains cas déjà rencontrés et sur 2 secondes, 10x plus long ca fait 20 secondes et là l'utilisateur est pas forcément content)
    le dataset est conseillé pour les débutants car il sait faire plein de choses donc ils ont pas trop de questions à se poser (enfin c'est mon avis)
    coté performance je ne partage pas ton avis avec le dataset en une connexion on récupérer toute les données donc a besoin dans la BD je ne vois pas comment ce serais plus long que le datareader qui se connecte pour la lecture ligne par ligne (La c'est juste mon point de vue perso )
    Coté volumétrie possible puisque le dataset créer en quelque sorte un clone des données au niveau de l'application
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par lilroma Voir le message
    le datareader qui se connecte pour la lecture ligne par ligne
    Le DataReader ne se connecte pas, il est connecté (par définition, sinon il ne marche pas : c'est d'ailleurs son principal "défaut" vs le DataSet, plus les contraintes lié au lock des lignes qui sont à prendre un compte).

    - Mode déconnecté obligatoire : DataSet

    - Mode connecté possible : DataReader

    C'est tout.

  11. #11
    Membre éprouvé
    Inscrit en
    Avril 2009
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 99
    Par défaut
    Sinon, avec vb 2008, on peut faire ça avec du link, non ? Je ne sais pas trop comment ça marche, mais il parait que c'est GE-NI-AL... (et surtout super rapide) mais peut-être que ça ne s'applique pas ici...
    (sur ce, je laisse la place aux experts )

  12. #12
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    je ne suis pas du tout d'accord avec vous
    j'ai toujours pensé que le dataset n'est qu'un objet qui parcours toutes les lignes avec un DATAREADER et les stock en ram (en plus il permet de faire des mises à jour et autre)

    et je viens de vérifier avec reflector, le dataset est rempli via un dataadapter et le dataadapter.fill passe bien par un datareader

    le dataset ne peut donc qu'etre moins performant (et de loin)

    et je ne suis pas sur qu'on puisse faire du mode connecté en .net
    par mode connecté j'entends que la liaison reste ouverte et que les données sont gérées avec une curseur de type optimiste ou pessimiste à l'ancienne

    le datareader ne peux que lire en avant, et il faut stocker les données quelque part
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    et je ne suis pas sur qu'on puisse faire du mode connecté en .net
    Pas d'accord avec toi

    Citation Envoyé par sperot51 Voir le message
    par mode connecté j'entends que la liaison reste ouverte

    le datareader ne peux que lire en avant, et il faut stocker les données quelque part
    très d'accord avec toi et je crois que sa répond largement a la question de notre amies

    Concernant la performance je me limite juste aux articles que j'ai lue pour penche pour le dataset
    Perso jusqu'ici j'ai toujours utilisé le datareader, cette discussion m'a donné l'envie de tester les deux modes la je pourrai tirer ma propre conclusion

    En tous cas merci a toi Bluedeep et sperot51
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

Discussions similaires

  1. Tester le nombre de connexions pour un site / IIS
    Par identifiant_bidon dans le forum IIS
    Réponses: 10
    Dernier message: 23/05/2007, 08h50
  2. Test du nombre de connexions pour un site via IIS
    Par identifiant_bidon dans le forum IIS
    Réponses: 1
    Dernier message: 20/04/2007, 10h33
  3. Réponses: 2
    Dernier message: 15/03/2007, 14h00
  4. Limiter nombre de connexions pour plusieurs SGBD
    Par rampageXT dans le forum JDBC
    Réponses: 12
    Dernier message: 01/03/2007, 18h58

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