- •1.4. Адаптер данных (объект DataAdapter) 13
- •1. Ado.Net как базовый объект доступа к базам данных
- •1.1. Структура компонента доступа к данным ado.Net
- •1.1.1. Работа в отрыве от источника данных
- •1.1.2. Взаимодействие с базой данных через команды
- •1.1.3. Взаимодействие с базой данных через объект DataSet
- •1.1.4. Независимость набора данных DataSet от источника данных
- •1.1.5. Обмен данными в формате xml
- •1.1.6. Схемы, определяющие структуру данных
- •1.2. Сравнение ado.Net и ado
- •1.2.1. Представление данных в памяти
- •1.2.2. Навигация по данным и курсоры
- •1.2.3. Минимизация открытых соединений
- •1.2.4. Разделение данных между приложениями
- •1.3. Соединение с источником данных (объект Connection)
- •1.3.1. Строка соединения
- •1.3.2. Открытие и закрытие соединения
- •1.3.3. Пул соединений
- •1.3.4. Транзакции
- •1.3.5. Конфигурирование свойств Connection
- •1.3.6. Объект Connection и безопасность
- •1.3.7. Создание объекта Connection в режиме дизайнера с помощью Server Explorer
- •1.3.8. Инструменты Visual Studio для создания объектов Connection
- •1.3.9. Создание объекта Connection в ado.Net
- •1.4. Адаптер данных (объект DataAdapter)
- •1.4.1. Адаптеры данных и связанные таблицы
- •1.4.2. Адаптеры данных и объекты Command
- •1.4.3. Чтение и обновление данных с использованием объекта DataAdapter
- •1.4.4. Параметры команд объекта DataAdapter
- •1.4.5. Свойство TableMappings объекта DataAdapter
- •1.4.6. Создание объекта DataAdapter
- •1.4.7. Конфигурирование параметров объекта DataAdapter
- •1.4.8. Связывание колонок таблиц источника данных и объекта DataSet через адаптер данных
- •1.4.9. Предварительный просмотр данных, полученных объектом DataAdapter
1.1.4. Независимость набора данных DataSet от источника данных
Несмотря на то, что DataSet является фрагментом (кэшем) базы данных, он не имеет постоянной фактической связи с первоисточником. Объект DataSet — это контейнер, заполняемый информацией другим объектом — адаптером данных — DataAdapter, который взаимодействует с первоисточником через SQL-запросы или хранимые процедуры. Один объект DataSet может взаимодействовать с несколькими объектами DataAdapter, каждый из которых обеспечивает наполнение данными таблиц контейнера.
Поскольку объект DataSet непосредственно не связан с источником данных, существует хорошая предпосылка для интеграции (объединения) данных, которые поступают из разных источников. Например, часть информации в DataSet может поступить из базы данных центрального офиса компании, часть из базы данных удаленного филиала, или вообще не из базы данных, а из другого источника, например, из электронной таблицы. Как только данные поступят в контейнер DataSet, пользователь может работать с ними как с единым информационным массивом, используя свойства и методы одного объекта, и абсолютно независимо от оригинального источника данных. Схема взаимодействия отсоединенного набора данных DataSet с базой данных приведена на рис. 1.4.
1.1.5. Обмен данными в формате xml
При работе приложений данные должны перемещаться между исходной базой данных и объектом DataSet. В ADO.NET в качестве единого формата для передачи данных используется XML-формат. Аналогично, если данные записать в некий внешний файл, то они будут записаны в XML-формате. Таким образом, файл с данными в формате XML является точно таким же источником, как и любая база данных, и из него можно поместить данные в объект DataSet. Фактически в ADO.NET XML является фундаментальным форматом для данных. В ADO.NET автоматически создают XML-файлы при передаче информации между объектами и компонентами.
Использование обмена данных в едином формате XML имеет следующие преимущества:
-
XML — единый промышленный стандарт, что обеспечивает разработанным вами прикладным компонентам обмениваться данными с любыми другими компонентами в любых других приложениях, поскольку все они понимают и используют формат XML;
-
XML — обычный текстовый формат. При представлении данных в XML не используется двоичное кодирование, а это обеспечивает возможность передачи данных через любой протокол, например, через HTTP.
При разработке информационных систем вам, как программистам, не понадобиться знание структуры формата XML. ADO.NET автоматически выполнит преобразование данных в XML и из XML-формата так, как потребуется в текущий момент. Вы же будете взаимодействовать с данными путем использования обычных приемов программирования (через свойства и методы объектов).
1.1.6. Схемы, определяющие структуру данных
Хотя для манипулирования данными (извлекать, записывать, обновлять информацию в базах данных) вам не нужно знать структуру XML-файлов, все же могут возникнуть ситуации, когда необходимо напрямую работать с XML-форматом. Это обычно ситуации, в которых вы не извлекаете и не модифицируете сами данные, а работаете над проектированием структуры набора данных.
Описание набора данных в Dataset представлено с использованием формата XML. Для определения количества таблиц, перечня колонок каждой таблицы, задания типов данных, ограничений и тому подобного используется XML-схема, которая строится с использованием языка XML Schema Definition Language (XSD). Подобно тому, как данные могут быть загружены в объект DataSet из внешнего XML-источника, так и структура DataSet может быть загружена из XML-схемы.
При разработке большинства приложений нет необходимости углубляться в XML-схемы. Инструментальные средства Visual Studio.NET сами сгенерируют и скорректируют XML-схемы так, как требуется в текущей ситуации, основываясь на тех действиях, которые делает разработчик в режиме визуального дизайнера проекта. Например, когда вы используете окно дизайнера для создания объекта DataSet, где представлена одна из таблиц вашей базы данных, то Visual Studio .NET автоматически генерирует XML-схему,
описывающую структуру этого DataSet.
Тем не менее, может настать время, когда вы захотите создать новые или отредактировать существующие схемы самостоятельно. В таком случае, конечно, понадобятся более глубокие знания по данному вопросу.