Адаптеры данных
33Работа с базами данных в .NET Framework --- ADO.NET --- Адаптеры данных
Мы уже разобрались со всеми нюансами ручной работы с объектами 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.