- •Лабораторная работа №5. Разработка приложений с применением управляемых провайдеров ado.Net
- •1. Цель работы
- •2. Сведения из теории
- •2.1. Общие сведения об управляемых провайдерах ado.Net
- •2.2. Управляемый провайдер ole db
- •2.2.1. Установление соединения при помощи типа OleDbConnection
- •2.2.2. Построение команды sql
- •2.2.3. Работа с OleDbDataReader
- •2.2.4. Класс OleDbDataAdapter
- •3. Пример выполнения работы
- •2.1. Создание базы данных в Microsoft Access
- •3.2. Доступ к данным с помощью управляемого провайдера ole db
- •3.3. Визуальное проектирование диалогового окна
- •3.4. Проектирование программного кода
- •4. Варианты заданий для самостоятельной работы
2.2.2. Построение команды sql
Объектно-ориентированным представлением запроса на языке SQL в ADO.NET является класс OleDbCommand. Сам текст команды определяется через свойство CommandText. Множество типов ADO.NET принимают объект OleDbCommand в качестве параметра для того, чтобы передать запрос к источнику данных. Также в классе OleDbCommand предусмотрено множество других компонентов, которые позволяют определить характеристики запроса (см. таблицу).
Компонент |
Описание |
Cancel() |
Прекращает выполнение команды |
CommandText |
Позволяет получить или задать текст запроса на языке SQL, который будет передан источнику данных |
CommandTimeout |
Позволяет получить время тайм-аута при выполнении команды. По умолчанию это время равно 30 секундам |
CommandType |
Позволяет получить или установить значение, определяющее, как именно будет интерпретирован текст запроса |
Connection |
Позволяет получить ссылку на объект OleDbConnection, для которого используется данный объект OleDbCommand |
ExecuteReader() |
Возвращает объект OleDbDataReader |
Parameters |
Возвращает коллекцию параметров OleDbParameterCollection |
Prepare() |
Готовит команду к выполнению (например, она будет откомпилирована) на источнике данных |
2.2.3. Работа с OleDbDataReader
После того, как соединение с источником данных открыто и создан объект – команда SQL, следующая задача – передать эту команду (запрос) источнику данных. Это можно сделать несколькими способами, но использование OleDbDataReader – это наиболее простой, наиболее быстрый способ получения информации от источника данных … и наименее гибкий. Этот класс представляет однонаправленный (только вперед), доступный только для чтения поток данных, который за один раз возвращает одну строку в ответ на запрос SQL.
Класс OleDbDataReader очень полезен, когда необходимо последовательно обработать большое количество данных и в то же время не нужно выполнять с этими данными какие-либо операции в памяти. В отличие от DataSet, при использовании OleDbDataReader соединение с базой данных не закрывается автоматически, а сохраняется активным до тех пор, пока не будет закрыто явным образом.
2.2.4. Класс OleDbDataAdapter
Класс OleDbDataAdapter используется в тех случаях, когда необходимо заполнить полученными с сервера данными объект DataSet и выполнить с ними определенные операции.
Основное назначение этого класса – извлечь информацию из источника данных и заполнить ею объект DataTable в DataSet при помощи метода OleDbDataAdapter.Fill(). Метод Fill() многократно перегружен, ниже приведены два наиболее часто используемых варианта (возвращаемое значение int позволяет получить информацию о количестве записей, полученных из источника данных):
//Заполняет объект DataSet данными, полученными из таблицы
//на источнике данных с указанным именем
public int Fill(DataSet ds, string tableName);
//Также заполняет данными, но только теми, которые находятся
//в указанных границах
public int Fill(DataSet ds, string tableName, int startRecord, int maxRecord);
Конечно, перед тем, как вызывать этот метод, нужно иметь уже созданный объект OleDbDataAdapter. Конструктор OleDbDataAdapter также многократно перегружен, но обычно необходимо указать информацию о параметрах подключения к базе данных и команду SELECT на языке SQL, которая будет использована для заполнения DataTable.
OleDbDataAdapter позволяет не только заполнять объект DataTable внутри DataSet данными, полученными из источника, но и помещать измененные данные обратно в источник данных при помощи стандартных команд SQL. Ниже в таблице представлены компоненты класса OleDbDataAdapter, которые позволяют это сделать, а также некоторые другие важнейшие элементы этого класса.
Компонент |
Описание |
DeleteCommand InsertCommand SelectCommand UpdateCommand |
Используются для определения того, какая именно команда SQL будет передана на источник данных при вызове метода Update(). Каждое из этих свойств определяется при помощи объектов OleDbCommand |
Fill() |
Заполняет указанную таблицу в DataSet определенным пользователем количеством записей |
GetFillParameters() |
Возвращает все параметры, использованные при выполнении SELECT к источнику данных |
Update() |
Вызывает соответствующие команды INSERT, UPDATE, DELETE к источнику данных для каждой вставленной, измененной или удаленной строки в таблице объекта DataSet |
При использовании свойств DeleteCommand, InsertCommand, SelectCommand, UpdateCommand объект OleDbDataAdapter автоматически переводит внесенные изменения в таблицу данных в DataSet в соответствующие команды на языке SQL, сохраняя, таким образом, внесенные изменения в источнике данных. Эти свойства позволяют определить соответствующие команды SQL в деталях.