Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС / Подключенный режим / 0-Технология доступа к данным ADO.NET.docx
Скачиваний:
12
Добавлен:
28.06.2021
Размер:
497.95 Кб
Скачать

13

Технология доступа к данным ADO.NET

Технология ADO.NET предоставляет приложениям средства доступа к таким источникам данных как SQL Server и XML, к источникам данных предоставляемых посредством OLE DB и ODBC. Приложения могут использовать ADO.NET для соединения с источниками данных и для получения, обработки и обновления имеющихся в них данных.

Архитектура данных ADO.NET

В Visual Studio .NET есть множество встроенных мастеров и дизайнеров, которые помогут оснастить приложение надежным механизмом доступа к данным, затратив минимум усилий на написание кода. Наряду с этим все возможности объектной модели ADO.NET доступны программно, что позволяет реализовать нестандартные функции или создавать приложения под нужды пользователя.

Доступ к данным в ADO.NET основан на использовании двух компонентов:

  • провайдера данных (Data Provider), выполняющего функции посредника при взаимодействии приложения и баз данных;

  • набора данных – объекта DataSet, в котором данные хранятся на локальном компьютере.

Провайдеры данных

Связь с БД создается и поддерживается при помощи провайдера данных. Провайдер – это набор классов, взаимосвязанных компонентов, обеспечивающих эффективный высокопроизводительный доступ к данным (рис. 1).

Рис. 1. Иерархия классов провайдеров данных ADO.NET

Любой провайдер данных состоит из четырех компонентов:

  1. Connection – обеспечивает подключение к источнику данных. Visual Studio поддерживает следующие классы: SqlConnection – для подключения к SQL Server, OleDbConnection – для подключения к разным базам данных. Данные, необходимые для открытия канала связи с БД, хранятся в свойстве ConnectionString объекта Connection. Объект поддерживает ряд методов, позволяющих обрабатывать данные с применением транзакций.

  2. Command – применяется для управления источником данных. Позволяет исполнять команды SQL для возврата данных, изменения данных, выполнения хранимых процедур и передачи или получения сведений о параметрах. Объект Command использует уже установленное соединение. Представлен классами SqlCommand и OleDbCommand.

  3. DataReader – предоставляет доступный только для однонаправленного чтения набор записей, подключенный к источнику данных. Обеспечивает высокопроизводительный поток данных. В отличие от других компонентов провайдера данных, создавать экземпляры DataReader напрямую нельзя. Его можно получить при помощи методов ExecuteReader объекта Command. Так как в любой момент времени в памяти находится только одна строка, использование объекта DataReader почти не снижает производительность системы, но требует монопольного доступа к открытому объекту Connection в течение времени жизни объекта DataReader. Представлен классами SqlDataReader и OleDbDataReader.

  4. DataAdapter – заполняет отсоединенный объект DataSet или DataTable и обновляет его содержимое. Выполняет функции посредника между объектом DataSet и источником данных. Использует объекты Command для выполнения команд SQL на источнике данных, для загрузки DataSet с данными и согласования изменений данных, выполненных в DataSet вновь с источником данных. Это основной класс ADO.NET, обеспечивающий доступ к отсоединенным данным. При вызове метода Fill() объект заполняет DataTable или DataSet данными, полученными из БД. После обработки данных, загруженных в память, можно записать модифицированные данные в БД, вызвав метод Update(). При вызове метода Update() все измененные данные копируются из объекта DataSet в БД с исполнением команды InsertCommand, DeleteCommand или UpdateCommand.

Организация доступа к данным

Доступ к данным в ADO.NET осуществляется следующим образом:

  1. Объект Connection устанавливает между приложением и БД соединение, напрямую доступное объектам Command и DataAdapter.

  2. Объект Command позволяет исполнять команды непосредственно над БД. Это могут быть команды, не возвращающие данные (INSERT, UPDATE, DELETE). Если исполненная команда возвращает несколько значений (SELECT), объект Command открывает к ним доступ через объект DataReader.

  3. Полученные результаты можно обрабатывать напрямую, используя код приложения, либо через объект DataSet, заполнив его с помощью DataAdapter.

  4. Для обновления БД также используют объекты Command или DataAdapter.

Объект DataSet

Объект DataSet – это представление в памяти компьютера данных, изолированных от источника данных. Объект можно рассматривать как локальную копию фрагмента БД. Объект хранится в памяти, его содержимым можно манипулировать и обновлять его независимо от БД, играющей роль источника данных. При необходимости может служить шаблоном для обновления серверной БД.

Объект DataSet содержит набор объектов DataTable (набор может быть пустым). Каждый объект DataTable представляет в памяти компьютера одну таблицу. Структура объекта DataTable определяется двумя наборами (составляющими схему таблицы):

  • набор DataColumns, куда входят все столбцы таблицы;

  • набор ограничений таблицы.

В DataTable также входит объект DataRows, где хранятся данные таблицы. Кроме того, DataSet содержит набор ExtendedProperties, в котором хранятся дополнительные данные объекта.

Класс DataSet в ADO.NET сконструирован для доступа к данным, независимо от их источника. Он может быть использован с разными источниками данных, с XML-данными или для управления локальными данными.

Подключение к базе данных

Есть несколько способов подключения к БД в приложении. Проще всего это сделать при помощи графических инструментов Visual Studio.

Для управления текущими соединениями с источниками данных служит окно Обозреватель баз данных (Server Explorer). Доступные текущие соединения отображаются в виде узлов дерева Подключения данных (Data Connections).

Создание нового подключения:

  1. В окне Обозреватель баз данных необходимо щелкнуть ПКМ по узлу Подключения данных и в контекстном меню выбрать пункт Добавить подключение … (рис. 2).

Рис. 2. Создание нового подключения

  1. В появившемся диалоговом окне Добавить подключение необходимо указать имя сервера, тип SQL-аутентификации и название базы данных (рис. 3). Окно Добавить подключение (Add Connection) позволяет выбрать провайдер данных. При нажатии кнопки Изменить (Change) появится диалоговое окно Сменить источник данных (Change Data Source), которое предоставляет список провайдеров для подключения к базе данных (рис. 4).

Рис. 3. Окно создания нового подключения Добавить подключение (Add Connection)

Выпадающий список Имя сервера позволяет выбрать доступный SQL-сервер. Если в списке сервера нет, то его можно непосредственно ввести в поле ввода. При работе с SQL Server 2012 Express в списке будет видно только имя компьютера. Следует помнить, что устанавливался именованный экземпляр и дописать полное имя сервера вручную (например, OLEG-PC\SQLEXPRESS).

Рис. 4. Окно Сменить источник данных (Change Data Source)

  1. В этом же окне нужно щелкнуть на кнопке Проверить подключение (Test Connection), чтобы убедиться в том, что подключение выполнено (рис. 5).

Рис. 5. Диалоговое окно проверки подключения

  1. После нажатия кнопки OK в узле Подключения данных окна Обозреватель баз данных будет добавлено подключение к БД Book. Под значком подключения расположены каталоги для объектов базы данных (рис. 6).

Рис. 6. Отображение созданного подключения

Объект Connection

Чтобы создать объект Connection в коде программы, надо создать новый объект Command и присвоить его свойству ConnectionString содержимое строки соединения с базой данных:

SqlConnection con = new SqlConnection( );

con.ConnectionString = " < строка подключения > ";

Можно также задать строку подключения в качестве параметра в конструкторе объекта Connection:

SqlConnection con = new SqlConnection(string ConnectionString);

Строку подключения можно взять из окна свойств соединения с базой данных из узла Подключения данных в окне Обозреватель баз данных (рис. 7).

Рис. 7. Окно свойств соединения с базой данных Book

В реальных приложениях строку соединения не задают жестко в коде программы, а выносят во внешний файл настроек приложения. Откройте окно свойств проекта и выберите вкладку Параметры (Settings).

Создайте новый параметр, который будет хранить строку соединения с базой данных:

  • Имя ConString;

  • Тип Connection string;

  • Область Application;

  • Значение – Data Source=OLEG-PC\SQLEXPRESS; Initial Catalog=Book; Integrated Security=True.

Теперь передать строку соединения из конфигурационного файла в объект Connection можно следующим образом:

SqlConnection con = new SqlConnection();

con.ConnectionString = Properties.Settings.Default.ConString;

Рис. 8. Окно свойств проекта

При этом в файле конфигурации приложения появится параметр соединения с базой данных, как показано на рис. 9.

Рис. 9. Окно свойств проекта