Адаптеры данных

33

Мы уже разобрались со всеми нюансами ручной работы с объектами DataSet в ADO.NET, и теперь можно перейти к рассмотрению объектов адаптеров данных. Класс адаптеров данных применяется для заполнения наборов данных DataSet с помощью объектов DataTable; кроме того, они могут отправлять измененные DataTable назад в базу данных для обработки. В таблице ниже перечислены основные члены базового класса DbDataAdapter, от которого порождаются все объекты адаптеров данных (например, SqlDataAdapter и OdbcDataAdapter):

Fill() Выполняет команду SQL SELECT (указанную в свойстве SelectCommand) для запроса к базе данных и загрузки этих данных в объект DataTable
SelectCommand,
InsertCommand,
UpdateCommand,
DeleteCommand
Содержат SQL-команды, отправляемые в хранилище данных при вызовах методов Fill() и Update()
Update() Выполняет команды SQL INSERT, UPDATE и DELETE (указанные свойствами InsertCommand, UpdateCommand и DeleteCommand) для сохранения в базе данных изменений, выполненных в DataTable

Адаптер данных определяет четыре свойства: SelectCommand, InsertCommand, UpdateCommand и DeleteCommand. При создании объекта адаптера данных для конкретного поставщика данных (например, SqlDataAdapter) можно передать строку с текстом команды, используемом объектом команды SelectCommand.

После должной настройки каждого из четырех объектов команд можно вызвать метод Fill() и получить объект DataSet (или, при желании, отдельный DataTable). Для этого объект команды выполняет оператор SQL SELECT, заданный с помощью свойства SelectCommand.

Аналогично, при необходимости сохранить измененный объект DataSet (или DataTable) в базе данных для обработки можно вызвать метод Update(), который использует какой-то из оставшихся объектов команд в зависимости от состояния каждой строки в DataTable.

Один из самых странных аспектов работы с объектом адаптера данных состоит в том, что при этом не нужно открывать или закрывать подключение к базе данных. Все это делается автоматически. Однако адаптеру данных нужно передать объект подключения или строку подключения (на основании которой все равно будет создан объект подключения), чтобы сообщить адаптеру данных, с какой базой данных вы хотите взаимодействовать.

Адаптер данных безразличен по своей природе. Вы можете подключать на ходу разные объекты подключения и объекты команд и выбирать данные из самых различных баз данных. Например, один объект DataSet может содержать табличные данные, полученные от поставщиков данных SQL Server, Oracle и MySQL.

Пройди тесты
Лучший чат для C# программистов