#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. Элементы управления с привязкой к данным созданы для использования этой абстракции.