Класс DataAdapter
Объекты класса DataAdapter обеспечивают связь между источником данных и объектом DataSet, который создает экземпляр части базы данных в оперативной памяти. Объекты DataAdapter способны извлекать данные, заполнять объекты DataTable в DataSet и при необходимости обновлять содержимое источника данных. В DataSet может храниться несколько таблиц, и для каждого объекта DataTable, добавляемого к объекту DataSet, следует создавать собственный объект DataAdapter.
В классе DataAdapter описаны четыре основных свойства, которым должны присваиваться ссылки на объекты класса Command:
- • SelectCommand – команда для выборки данных;
- • InsertCommand – команда для вставки новых данных;
- • UpdateCommand – команда для обновления данных;
- • DeleteCommand – команда для удаления данных.
Создание объектов класса DataAdapter
Объекты класса Command, которые используются в объекте DataAdapter, можно создавать разными способами:
- • обычным способом с помощью операции new, как рассматривалось ранее, и присваить полученную ссылку соответствующим свойствам;
- • использовать конструктор класса DataAdapter для создания команды выборки SelectCommand с помощью заданного оператора SELECT;
- • если задана команда SelectCommand, то для автоматического создания команд InsertCommand, UpdateCommand и DeleteCommand можно использовать вспомогательного класс Command Builder.
Обязательной командой в DataAdapter является команда SelectCommand. Если адаптер не будет сохранять изменения, сделанные в объекте DataSet в БД, то другие команды можно нс задавать. Для создания этой команды можно в конструктор класса DataAdapter передать текст SQL-оператора Select и ссылку на объект Connection. Например:
SqlDataAdapter prodAdapter = new SqlDataAdapter ("SELECT * FROM Products", prodConnection);
Для автоматического создания других команд (если это простые операторы SQL), можно использовать вспомогательный класс CommandBuilder (он также входит в состав провайдера и требует указания префикса). Он автоматически формирует команды вставки, обновления и удаления на основе заданного оператора SELECT. Для создания всех этих команд достаточно передать ссылку на объект класса DataAdapter в конструктор класса CommandBuilder. Например:
SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(queryString, connection); SqlCommandBuilder builder = new SqlCommandBuilder(adapter);