* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Извлечение данных с помощью объектов DataAdapter
8 февраля 2009

Хотя объект DataSet не соединен с их источником данных, он представляет полный
набор данных, включая таблицы, связи между ними и ограничения. Поскольку
DataSet является отсоединенным представлением, он способен хранить информа-
цию из нескольких источников. Все взаимодействие между DataSet и БД протекает
под контролем объекта DataAdapter.
Объект DataAdapter инкапсулирует функциональность, необходимую для запол-
нения DataSet данными и обновления БД, играя роль «моста» между соединением и
объектом DataSet, В свойстве Connection объекта DataAdapter хранится ссылка на
объект соединения, представляющий БД и позволяющий манипулировать ее содер-
жимым. Объект DataAdapter также поддерживает свойство SelectCommand. Это свой-
ство содержит объект Command, который представляет команды, осуществляющие
выборку данных из источника. Как и у других компонентов провайдера данных,
реализация объекта DataAdapter специфична для типа провайдера: SqlDataAdapter
разработан специально для взаимодействия с SQL Server 7.0 и выше, a OleDbData-
Adapter позволяет подключать самые разные источники данных.
Чтобы заполнить DataSet данными, следует вызвать метод Fill объекта Data-
Adapter. Этот метод исполняет команды, заданные свойством SelectCommand, на
соединении, указанном свойством Connection, и заполняет DataSet данными, кото-
рые возвращает исполненная команда. Методу Fill необходимо передать целевой
объект, которым может быть DataSet либо DataTable, например:
Visual Basic .NET
Этот пример предполагает наличие адаптера данных
с именем myDataAcfapter.
Dim myDataSet As New DataSet()
Исполнить команду, записанную а свойство SelectCommand,
и заполнить результатами объект myDataSet.
myDataAdapter.Fill(myDataSet)
Visual C#
// Этот пример предполагает наличие адаптера данных
// с именем myDataAdapter.
DataSet myDataSet = new DataSet();
// Исполнить команду, записанную в свойство SelectCommand,
// и заполнить результатами объект myDataSet.
myDataAdapter.Fill(myDataSet);
Заметьте: взаимодействия с объектом Connection не происходит. При исполне-
нии команды, вызванной методом Fill, соединение открывается только на нремя
извлечения данных, после чего сразу же закрывается. Таким образом, после извле-
чения данные становятся отсоединенными и ими можно манипулировать в коде
независимо от БД, а при необходимости ее можно и обновить.
*• Извлечение данных с помощью объекта Data-ttfapter
1. Создайте объект DataAdapter соответствующего типа, определяющий подлежа-
щие выборке данные.
2. Создайте экземпляр класса DataSet или DataTable.
3. Вызовите метод Fill объекта DataAdapter, передав ему созданный объект Data Table
или DataSet.
Обычно для каждой таблицы с данными создают отдельный объект DataAdapter.
Если нужно загрузить содержимое нескольких таблиц в один объект DataSet, следу-
ет задействовать несколько объектов DataAdapter. Один и тот же объект DataSet мо-
жет быть многократно передан методу Fill, при вызове которого у каждого объекта
DataAdapter сознается новый объект DataTable, заполняется данными и добавляется
к объекту DataSet.
> Как заполнить объект DataSet данными из нескольких таблиц
1. Создайте экземпляр класса DataSet.
2. Создайте отдельный экземпляр DataAdapter соответствующего типа для каждой
из таблиц, содержимое которой должно быть в DataSet.
3. Вызовите метод Filly каждого объекта DataAdapter, передав ему созданный ранее
объект DataSet.
Примечание При добавлении к объекту DataSet связанных таблиц DataAdapter не
воспроизводит связи между ними, поэтому в DataSet их придется восстановить вруч-
ную путем создания новых объектов DataRelation, Об этом рассказано на занятии 3.
Предварительный просмотр данных
Для предварительного просмотра данных, возвращаемых объектами DataAdapter,
следует выбрать в меню Data элемент Preview Data.
У типизированного объекта DataSet, как можно предположить по его названию,
все члены строго типизированы. На таблицы и поля такого объекта DataSet можно
ссылаться по их дружественным именам, представляющим реальные имена таблиц
и столбцов, с которыми вы работаете; их значения доступны в виде значений соот-
ветствующих типов, а не объектов. Это дает приложению целый ряд преимуществ.
Во-первых, кол программы становится более понятным и его удобнее сопровож-
дать. Во-вторых, ошибки из-за несоответствия типов обнаруживаются в период
компиляции, а не в период выполнения — это экономит время, необходимое для
тестирования. Наконец, полные имена членов наборов допустимо заменять их дру-
жественными именами, при этом в период разработки имена типизированные чле-
нов данных отображаются в окнах среды разработки благодаря технологии Intellisense.
Ниже приводится пример эквивалентных строк кода, использующих типизи-
рованные и нетипизированные объекты DataSet. Оба примера возвращают значе-
ния поля Orderl D первой записи таблицы Orders в результирующем наборе dsorders.
Вот первый пример, использующий нетипизированные объекты DataSet.
Visual Basic .NET
Dim myOrder As String
myOrder = CType(dsOrders.Tables("Orders").Rows(0).Itern("OrderID"),
String)
Visual C#
string rriyOrder;
myOrder - (string)dsOrders.Tables["Orders"],Rows[0]["OrderID"];
Следующий пример написан с применением типизированных объектов DataSet.
Как видите, второй фрагмент существенно проще и не требует явного преобразова-
ния типов.
Visual Basic .NET
Dim rnyOrder As String
myOroer = dsOrcers.Orders(0).OrderID
Visual C#
string myOrder;
myOrder = dsOrders.Orders[0].OrderID;
В действительности типизированный DataSet — это экземпляр совсем другого
класса, производного от DataSet. Структура этого класса определяется файлом схе-
мы XML (XSD-файлом), в котором описаны различные особенности структуры
объекта DataSet, в том числе имена таблиц и столбцов. Для создания нового типи-
зированного объекта DataSet требуется файл схемы, но его удается создать, только
если структура данных, с которыми вам предстоит работать, известна заранее
Чтобы генерировать типизированный объект DataSet, выберите в диалоговом
окне Data команду Generate Dataset — откроется одноименное диалоговое окно.
В открывшемся окне можно выбрать новый объект DataSet либо повторно сге-
нерировать существующий. В этом списке отображаются все доступные таблицы с
их объектами DataAdapter, Пометив флажок, расположенный внизу диалогового
окна, вы добавите экземпляр нового объекта DataSet в окно дизайнера.
По щелчку кнопки ОК генерируется XSD-файл с корректной схемой, необходи-
мый для создания объекта DataSet. Если установить этот флажок, в окно конструк-
тора добавляется экземпляр объекта DataSet, созданный на основе генерированной
схемы. При заполнении нового объекта DataSet имена таблицы и столбцов совпада-
ют с именами, указанными в схеме, а типы данных соответствуют типам, которые
возвращаются объектом DataAdapter.
*•• Как сгенерировать строго типизированный объект DataSet
1. Создайте и сконфигурируйте объекты DataAdapter соответствующего типа, воз-
вращающие нужные таблицы с данными.
2. В меню Data выберите команду Generate Dataset.
Примечание Это также можно сделать, щелкнув правой кнопкой мыши объект
DataAdapter в окне дизайнера и выбрав команду Generate Dataset либо щелкнув
кнопку Generate Dataset в окне Properties.
3. В диалоговом окне Generate Dataset щелкните New и назовите новый объект
DataSet.
4. Выберите в списке доступных таблиц те, которые должны быть включены в схе-
му. Чтобы добавить в окно дизайнера экземпляр объекта DataSet, установите
соответствующий флажок.
5. Щелкните ОК — XSD-файл будет генерирован и добавлен к проекту. Если на
предыдущем этапе вы установили флажок, на основе этого файла создается эк-
земпляр объекта DataSet и добавляется в окно конструктора.
Чтобы заполнить строго типизированный объект DataSet, вызовите метод Fill
каждого объекта DataAdapter, чьи данные вы хотите добавить в объект DataSet, пе-
редав этот DataSet при вызове как целевой объект.


Теги: .NET

Статьи по теме:

Переменные методов
Получение доступа к членам базового класса
Извлечение типизированных данных с помощью объекта DataReader
Применение наследования с формами
Создание конфигурационного файла
Объекты, члены и абстрагирование
Общеязыковая исполняющая среда
Наборы
Извлечение и обновление данных с помощью объектов DataAdapter и DataSet
Параметризованные свойства
Реализация специальных возможностей на этапе проектирования
Ограничения Foreign Key
Применение типов данных
Перегрузка членов
Вложенные элементы управления и контейнеры
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Извлечение данных с помощью объектов DataAdapter. Регион сайта: Москва и Санкт-Петербург