2007 г.
Марченко Антон Леонардович
Интернет-Университет Информационных Технологий, INTUIT.ru
Назад Оглавление Вперёд
ADO .NET. Доступ к данным
Предполагается, что к моменту написания приложения соответствующая база данных уже создана.
Объектная модель ADO .NET реализует отсоединенный доступ к данным. При этом в Visual Studio .NET существует множество ВСТРОЕННЫХ мастеров и дизайнеров, которые позволяют реализовать механизмы доступа к БД еще на этапе разработки программного кода.
С другой стороны, задача получения доступа к данным может быть решена непосредственно во время выполнения приложения.
Концепция доступа к данным в ADO .NET основана на использовании двух компонентов:
- НАБОРА ДАННЫХ (представляется объектом класса
DataSet
) со стороны клиента. Это локальное временное хранилище данных; - ПРОВАЙДЕРА ДАННЫХ (представляется объектом класса
DataProvider
). Это посредник, обеспечивающий взаимодействие приложения и базы данных со стороны базы данных (в распределенных приложениях – со стороны сервера).
ADO .NET. Объектная модель
Объектная модель ADO .NET предполагает существование (при написании приложения для работы с базой данных — использование) двух множеств классов, выполняющих четко определенные задачи при работе с базой данных:
Классы подсоединенных объектов обеспечивают установление соединения с базой данных и управление базой со стороны приложения; классы отсоединенных объектов обеспечивают сохранение, использование и преобразование полученной от базы данных информации на стороне приложения.
Далее рассматриваются классы отсоединенных объектов объектной модели ADO .NET. Их подробному описанию посвящаются следующие разделы пособия. При этом классы отсоединенных объектов могут быть самостоятельно использованы в приложении наряду с обычными компонентами и элементами управления, даже если в приложении и не предполагается организовывать работу с базами данных.
DataTable
Каждый объект DataTable
представляет одну таблицу базы данных. Таблица в каждый конкретный момент своего существования характеризуется:
- СХЕМОЙ таблицы,
- СОДЕРЖИМЫМ таблицы (информацией).
При этом СХЕМА таблицы (структура объекта DataTable
) определяется двумя наборами:
- множеством столбцов таблицы (набор
DataColumns
, состоящий из множества объектов DataColumn
), - множеством ограничений таблицы (набор
Constraints
, состоящий из множества объектов Constraint
).
События класса DataTable
В классе определены четыре события, которые позволяют перехватывать и в случае необходимости отменять изменения состояния таблицы данных.
- Изменения строк.
DataRowChanging
– изменения вносятся в строку таблицы. Объявление соответствующего обработчика события имеет вид
private static void Row_Changing( object sender, DataRowChangeEventArgs e )
DataRowChanged
– изменения внесены в строку таблицы. Объявление соответствующего обработчика события имеет вид
private static void Row_Changed( object sender, DataRowChangeEventArgs e )
Пример программного кода для объекта – представителя класса DataTable
:
Листинг 1: html, txt
Параметр обработчика события DataRowChangeEventArgs
обладает двумя свойствами (Action
и Row
), которые позволяют определить изменяемую строку и выполняемое над строкой действие. Действие кодируется значениями специального перечисления:
enum RowDataAction
{
Add,
Change,
Delete,
Commit,
Rollback,
Nothing
}
- Изменения полей (элементов в строках таблицы)
DataColumnChanging
– изменения вносятся в поле строки данных. Объявление соответствующего обработчика события имеет вид
private static void Column_Changing
(object sender, DataColumnChangeEventArgs e)
DataColumnChanged
– изменения были внесены в поле строки данных. Объявление соответствующего обработчика события имеет вид
private static void Column_Changed
(object sender, DataColumnChangeEventArgs e)
Параметр обработчика события DataColumnChangeEventArgs e
обладает тремя свойствами:
Свойство | Описание |
---|
Column | Get . Объект-представитель класса DataColumn с изменённым значением |
ProposedValue | Gets, sets . Новое значение для поля в строке |
Row | Строка, содержащая запись с изменяемым (измененным) значением |
Аналогичный пример. Только теперь программируется реакция на модификацию столбца (поля), а не строки:
Листинг 2: html, txt
Назад Оглавление Вперёд