2011-11-11 4 views
2

J'ai créé une méthode qui peut être appelée en utilisant un nom de procédure stockée et une liste de SqlParameters, appelons-la GetData(). GetData() gère ensuite la communication avec SQL Server et l'obtention des données. Ce que je dois alors faire est de remettre les données à l'appelant pour qu'elles les lisent, elles n'ont pas besoin de les manipuler. Qu'est-ce que j'essaie de comprendre, c'est s'il est préférable de remettre à l'appelant un DataTable ou SqlDataReader? À l'heure actuelle, je pense que l'utilisation d'un DataTable est la meilleure solution. Mes points de décision sur ceci sont:C# - Passing DataTable vs SqlDataReader

  • Les ensembles de données que je récupère sont petits, sous 100 lignes et 20 colonnes, donc la mémoire ne devrait pas être un problème. D'après ce que je comprends, un DataTable saisit toutes les données et les branche dans le DataTable, puis se déconnecte afin que GetData() gère sa propre connexion.
  • Avec un SqlDataReader, je devrais gérer la connexion dans la fonction d'appel après que j'en ai fini avec les données. Je ne serais pas capable de le fermer après avoir fait l'appel dans GetData() puisque je lis seulement une rangée à la fois de la base de données.

Est-ce que cela semble être le meilleur itinéraire pour ce dont j'ai besoin?

Répondre

2

Oui, votre idée est bonne.

Transmettez un datatable back, pas le sqldatareader. Les connexions ne doivent être maintenues que pendant le temps nécessaire pour transférer les données vers/depuis le serveur de base de données.

+0

Merci pour votre réponse rapide. – ammills01

0

Utilisez un DataTable. Les contrôles liés aux données sont construits pour utiliser cette abstraction.