Contenu du cours
Introduction à .NET avec C#
Introduction à .NET avec C#
DataReader Contre DataSet
Dans la dernière section, nous avons utilisé l'objet MySqlDataReader
pour lire les données de la base de données.
En théorie, DataReader (ou MySqlDataReader
) ne récupère pas l'intégralité des données lorsque nous exécutons une requête. Au lieu de cela, il récupère les données de manière séquentielle, ce qui signifie qu'il récupère une ligne à la fois. Lorsque nous exécutons la méthode Read(), elle récupère la ligne suivante de la base de données en temps réel.
C'est pourquoi une connexion active à la base de données est requise lors de la récupération des données. Cela explique également pourquoi nous devons fermer l'objet DataReader après avoir récupéré les données.
D'un autre côté, nous avons une autre méthode pour récupérer des données, qui est via un DataAdapter. Un DataAdapter récupère les données pertinentes de la base de données et remplit un DataSet avec les données récupérées, faisant essentiellement une copie de ces données. Un DataSet est un type spécial de classe pour stocker les données récupérées d'une base de données SQL. Nous pouvons facilement accéder et visualiser les données d'un DataSet.
Bien que les deux méthodes puissent sembler presque identiques, DataReader et DataSet ont quelques différences significatives :
Utilisation de la mémoire et stockage :
- DataReader récupère les données de la base de données un enregistrement à la fois et maintient une connexion ouverte pendant la lecture des données. Il ne stocke pas les données en mémoire. Cela entraîne une utilisation minimale de la mémoire ;
- DataSet stocke les données récupérées de la base de données en mémoire au sein de l'application.
Accessibilité et Navigation :
- DataReader fournit un flux de données rapide et uniquement vers l'avant. Il permet un accès séquentiel aux données et ne prend pas en charge l'accès aléatoire ou la navigation. Une fois qu'un enregistrement est lu, il ne peut pas être revisité à moins que la requête ne soit exécutée à nouveau ;
- DataSet vous permet de parcourir les lignes dans n'importe quel ordre et de modifier les données dans le DataSet sans affecter les données originales dans la base de données.
Accès en Temps Réel vs. Déconnecté :
- DataReader fournit un accès en temps réel aux données de la base de données. Il nécessite une connexion active à la base de données lors de la lecture des données, et la connexion reste ouverte jusqu'à ce que toutes les données aient été lues ou jusqu'à ce que le DataReader soit explicitement fermé ;
- DataSet fournit un accès déconnecté aux données. Une fois que les données sont récupérées de la base de données et stockées dans le DataSet, la connexion à la base de données peut être fermée. Les données sont alors disponibles dans l'application et peuvent être manipulées hors ligne sans maintenir une connexion à la base de données.
D'après les avantages et inconvénients mentionnés ci-dessus, nous pouvons conclure que DataReader est adapté aux scénarios où un accès uniquement vers l'avant aux données est suffisant, tandis que DataSet est plus adapté aux scénarios où vous souhaitez minimiser le temps de connexion et avez besoin de travailler avec les données de manière interactive.
1. Laquelle des affirmations suivantes concernant DataReader est vraie ?
2. Que stocke DataSet en mémoire ?
Merci pour vos commentaires !