C # — Передача DataTable против SqlDataReader

#c# #datatable #sqldatareader

#c# #datatable #sqldatareader

Вопрос:

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

Прямо сейчас я думаю, что переход с DataTable — лучший маршрут. Мои пункты принятия решения по этому поводу:

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

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

Ответ №1:

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

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

Комментарии:

1. Спасибо за ваш быстрый ответ.

Ответ №2:

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