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

ASP.NET Discussion :

dataset ou dataredear


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Par défaut dataset ou dataredear
    Lequel utliser ,un dataset ou un dataredear dans une application asp.net ??

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Tout dépend de ce que tu veux récupérer. Est-ce une petite quantité d'information ? Un plus conséquente ?

    Pour le 2e cas, je me dirigerais sans hésiter vers le DataSet (dans le acs d'une application ASP.NET) car l'utilisation d'un DataReader risque d'alourdir énormément les traitements.

  3. #3
    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
    Citation Envoyé par Cardi Voir le message
    Tout dépend de ce que tu veux récupérer. Est-ce une petite quantité d'information ? Un plus conséquente ?

    Pour le 2e cas, je me dirigerais sans hésiter vers le DataSet (dans le acs d'une application ASP.NET) car l'utilisation d'un DataReader risque d'alourdir énormément les traitements.
    C'est surprenant, j'aurais dit exactement l'inverse, mais dans certains cas seulement. Je suis d'accord pour le DataSet quand le volume de données est modéré. Pour des grosses tables, l'empreinte mémoire d'un DataSet est à mon goût trop importante, dans ce cas, j'opterais plutot pour un DataReader.
    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

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Faudrait aussi savoir si tu souhaites juste lire les données ou alors faire un binding bidirectionnel.
    Car je suis pas sûr qu'un DataReader le permette (à vérifier qd même )

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 82
    Par défaut
    Histoire d'alimenter le débat:

    Tout d'abord, il faut bien voir les différences :
    DataReader
    • Travaille en mode connecté (la connexion à la DB ne sera relâché que lors de Close du DataReader)
    • En mode "forward only" --> Une fois accéder à la ligne 1, tu ne peux plus revenir en arrière
    • Terriblement léger


    DataSet
    • Travaille en mode déconnecté : va charger toutes les données côté serveur et va relâcher la connexion immédiatement (d'ailleurs, ce n'est pas toi qui la gère)
    • Accès à n'importe quel donnée à n'importe quel moment
    • Evidemment beaucoup plus lourd en mémoire, d'autant plus que ton dataset va mémoriser plusieurs versions de tes lignes afin de pouvoir "comitter" ou "rollbacker" tes modifications


    Bref, ça dépend beaucoup beaucoup de l'utilisation que tu veux faire.
    Mon credo est de dire: jamais de dataset pour rapatrier une seule ligne, c'est trop lourd et n'apporte rien. Il ne doit être utilisé que, à mon sens, dans les conditions suivantes
    • Besoin de rapatrier bcp de données (libérons les connexions au plus vite)
    • Besoin de rapatrier plusieurs tables d'un coup pour faire des séries de "join" côté .NET
    • Besoin de manipuler les données (rowfilter, sort, ...)


    Notez enfin que la réponse souvent donnée (je cite) "le dataset c'est mieux, parce que ça permet de faire des datasets typés et donc on n'hardcode pas le nom des champs de la DB et on n'a pas besoin de passer par la position du champs retournée" est nulle et non avenue:
    • Le dataset typé hardcode évidemment lui-même le nom des champs. Si cela peut être intéressant à des fins de lisibilité, ce n'est pas un avantage en soi sur le datareader (on peut créer notre propre classe de constantes par exemple)
    • On n'est pas obligé de passer par la position du champs avec un DataReader. Il possède aussi une méthode (dont le nom m'échappe. GetOrdinal je crois) qui nous permet de travailler avec le nom


    Qu'en pensez-vous ?

  6. #6
    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
    On n'est pas obligé de passer par la position du champs avec un DataReader. Il possède aussi une méthode (dont le nom m'échappe. GetOrdinal je crois) qui nous permet de travailler avec le nom
    Pas la peine d'utiliser GetOrdinal non plus...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DataReader dr;
    ...
    string s = (string) dr["nom_du_champ"];

Discussions similaires

  1. Le dataset.bof ne répond plus.
    Par fplanglois dans le forum Bases de données
    Réponses: 6
    Dernier message: 23/03/2004, 09h45
  2. Modifier l'ordre des Fields d'un dataset
    Par teska dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/03/2004, 16h38
  3. [C#] [SQLSERVER2000] Dataset et Xml
    Par farfadet dans le forum ASP.NET
    Réponses: 11
    Dernier message: 16/03/2004, 16h02
  4. [VB.net][PostgreSQL & ODBC] DataSet => NO_DAT
    Par rebolon dans le forum Accès aux données
    Réponses: 2
    Dernier message: 28/01/2004, 09h01
  5. [FLASH MX 2004 pro] DATASET, XML, ASP
    Par kenshi dans le forum Flash
    Réponses: 4
    Dernier message: 27/01/2004, 10h38

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