Je me demande simplement, quels éléments dois-je prendre en compte lorsque j'utilise DataReader et DataAdapter pour récupérer des données de la base de données et quelle est la différence entre les deux étant donné que le datareader nécessite une connexion ouverte et le dataadapter non... Dans nos projets, nous utilisons DataReader dans TOUT notre DAL, nous n'utilisons jamais dataadapter. Je me demande dans quel scénario il serait préférable d'utiliser le combo DataAdapter + DataTable plutôt que d'utiliser DataReader. Merci d'avance.
Réponses
Trop de publicités?Quelles sont les choses auxquelles je dois penser lorsque j'utilise DataReader et DataAdapter
DataReader : Bonne interface de bas niveau. Pratiquement la SEULE interface - si vous chargez des données dans des structures plus élevées, le chargement réel est toujours effectué en utilisant un DataReader.
DataAdapter / DataSet : choses non utilisées par les personnes qui aiment les programmes structurés et le code propre et qui n'écrivent pas juste par hasard une application de reporting. Utilisez plutôt un ORM - NHibernate (bon), Linq2SQL (mauvais), Entity Framework (mauvais) ou l'une des autres meilleures abstractions.
Je suppose que cette question est juste pour parler des avantages et des inconvénients, en étant en dehors du code
*Data Reader est beaucoup plus rapide que DataAdapter pour récupérer des données, mais vous devez savoir ce qu'est exactement le mode Déconnecté
*DataReader ou le mode Connecté et DataAdapter le mode Déconnecté sont utilisés dans les mêmes scénarios mais parfois le mode Déconnecté est meilleur si vous êtes éloigné de vos données
*Mais le mode Déconnecté est fourni avec des APIs riches comme DataAdapter, DataView, DataTable et DataSet. La chose puissante est que vous fournissez simplement à votre DataAdapter avec les commandes SELECT, INSERT, UPDATE, DELETE, attachez vos données à partir d'une seule table ou de plusieurs tables, avec une ligne de code Adapter.Fill(DataTable) ou Adapter.Fill(DataSet), et de la même manière avec la mise à jour des données Adapter.Update(DataTable)
*Mettre à jour des données hiérarchiques en mode déconnecté est bien meilleur que de travailler en mode connecté où il faut utiliser du code supplémentaire et une logique supplémentaire pour maintenir, en mode déconnecté, vous avez la possibilité de mettre à jour uniquement les lignes insérées ou mises à jour ou supprimées en plus l'opération de mise à jour est enveloppée dans une transaction .Net Adapter.Update(DataTable.Select("","",DataViewRowState.Added))
*En mode déconnecté, vous avez la possibilité d'obtenir les versions de chaque ligne de vos données, en plus, vous pouvez obtenir les modifications apportées à vos données DataTable.GetChanges()
*Le mode déconnecté vous fournit un DataSet fortement typé, vous obtenez donc le schéma de définition de vos données et les relations, vous pouvez obtenir des lignes parent et enfant
*Le mode déconnecté fournit une méthode pour obtenir des lignes par clé primaire et aussi pour obtenir des lignes avec des critères spécifiques DataTable.Select("FilterExpression","SortOrder",DataRowViewState)
*Vous pouvez faire des calculs sur un DataTable sans perturber votre serveur avec des calculs comme sélectionner productID, ProductName, Price, Quantity, price*quantity comme Total, vous pouvez facilement ajouter une colonne avec un critère spécifique (price*quantity)
*Vous pouvez faire des agrégations sur votre DataTable, DataTable.Compute("Sum(price)","price>250")
*En mode déconnecté, vous avez le CommandBuilder qui crée les commandes SQL pour vous, mais il ne fonctionne qu'avec une seule table
- Réponses précédentes
- Plus de réponses