C # - Передача DataTable против SqlDataReader - PullRequest
2 голосов
/ 11 ноября 2011

Я создал метод, который можно вызывать, используя имя хранимой процедуры и список SqlParameters, давайте назовем его GetData ().Затем GetData () управляет взаимодействием с SQL Server и получением данных.Затем мне нужно передать данные обратно вызывающей стороне, чтобы они могли их прочитать, им не нужно манипулировать ими.То, что я пытаюсь выяснить, так это то, лучше ли вернуть вызывающему объекту DataTable или SqlDataReader?

. Сейчас я думаю, что использование DataTable - лучший путь.Мое решение об этом:

  • Наборы данных, которые я получаю, маленькие, меньше 100 строк и 20 столбцов, поэтому память не должна быть проблемой.
  • СНасколько я понимаю, DataTable захватывает все данные и подключает их к DataTable, а затем отключает сам, чтобы GetData () управляла своим собственным соединением.
  • С SqlDataReader мне пришлось бы управлять соединением ввызов функции после того, как я сделал с данными.Я не смог бы закрыть его после выполнения вызова в GetData (), поскольку я читаю только одну строку за раз из базы данных.

Похоже, это лучший маршрут для переходадля чего мне нужно?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Да, ваша идея хороша.

Передача данных назад, а не sqldatareader. Соединения должны поддерживаться только в течение минимального времени, необходимого для передачи данных на сервер базы данных или с него.

0 голосов
/ 11 ноября 2011

Используйте DataTable. Элементы управления с привязкой к данным созданы для использования этой абстракции.

...