Демонстрация учебного примера.
9.16 Модуль данных.
Не визуальный компонент реализуется как окно - контейнер для помещения в него: компонент для работы с БД (TDataBase, TTable, TQuery, TStoredProc). А также, если необходимо, обработчиков событий этих компонентов и объектов полей соответствующих НД.
9.17 Свойства модуля.
Связывание модулей проекта.
Обращение к компонентам, расположенным в модуле данных.
Указание определения width.
Width …
9.18 Компоненты посредники.
Для каждого компонента набора данных в модуле помещается один компонент посредник DataSource, осуществляющий доступ к данным набора для визуальных компонентов и их обработчиков.
Обращение к параметрам (TParams) компонентов запросов и хранимых процедур производится непосредственно через свойства и методы компонентов.
9.19 Создание приложения клиента для работы с серверной БД.
Настройка соединения с СУБД.
Проверка работы.
Проектирование серверных наборов.
Проектирование главной формы, меню.
Проектирование интерфейсной части по управлению данными.
9.20 Транзакции.
Транзакция – одиночное или групповое изменение БД, которое выполняется полностью или не выполняется вообще (метод поддержания БД в целостном состоянии). Пример, банковской проводки.
Транзакция так же определяет режим видимости данных при работе нескольких пользователей.
Демонстрация видимости данных приложений Console и Expert.
9.21 SQL - операторы.
SET TRANSACTION - Начинает транзакцию и определяет ее поведение.
COMMIT - Сохраняет изменения, внесенные транзакцией, в базе данных и завершает транзакцию.
ROLLBACK - Отменяет изменения, внесенные транзакцией, и завершает транзакцию.
9.22 Старт транзакции.
Оператор SET TRANSACTION имеет формат:
SET TRANSACTION
[Access mode] - [READ WRITE | READ ONLY]
[Lock Resolution] - [WAIT | NO WAIT]
[Isolation Level]
{SNAPSHOT [TABLE STABILITY]
| READ COMMITTED [[NO] RECORD_VERSION]}
[Table Reservation] ;
позволяет транзакции получить гарантированный доступ необходимого уровня к указанным таблицам.
9.23 Уровни изоляции.
При одновременной работе нескольких клиентов с одной и той же БД возникают проблемы одновременного изменения данных. Для разрешения указанных проблем на стороне клиента определены три уровня изоляции (разграничения) транзакций:
Dirty Read (грязное чтение) - конкурирующие транзакции видят изменения, внесенные, но не подтвержденные текущей транзакцией.
Read Committed (чтение подтверждений) - конкурирующие транзакции оперируют только подтвержденными изменениями.
Repeatable Read (повторяющееся чтение) - заставляет конкурирующие транзакции оперировать с собственными (локальными) версиями одной и той же записи.
9.24 Управление в BDE.
При использовании BDE управление транзакциями на уровне приложения реализуется методами компонента DataBase и установкой параметров псевдонима.
Procedure StartTransaction;
Procedure Commit;
Procedure Rollback;
Управление видимостью данных определяется в свойстве:
Property TransIsolation: (tiDirtyRead), tiReadCommitted, tiRepeatableRead.
Проверка наличия активной незавершенной транзакции при помощи свойства:
Property InTransaction: Boolean;
9.25 IBTransaction.
Установка свойств транзакции в редакторе компонента
Установленные параметры сохраняются в свойстве Params.
9.26 Свойства транзакции.
1. Snapshot (concurrency, nowait) – обеспечивает видимость конкурирующих транзакций и немедленный возврат ошибок при обнаружении конфликтных ситуаций;
2. Read Committed (read_committed, rec_version, nowait) – аналогично предыдущему, включая обязательный выбор последней версии;
3. Read-Only Table Stability (read, consistency) – определяет открытую транзакцию только для чтения данных, блокируя при этом доступ к данным другим транзакциям;
4. Read-Write Table Stability (write, consistency) – разрешает транзакции просмотр и модификацию данных, блокируя доступ из других транзакций.
9.27 Старт и режимы.
Определение старта транзакции установкой свойства Active компонента в True или False.
TIBTransaction.AutoStopAction определяет, какое действие брать при автоматически окончании транзакций
TIBTransaction.DefaultAction определяет действие, выполняемое при принудительном завершении транзакции
9.28 Значения параметров.
Значение saNone – не определяет поведение неявно стартующей транзакции, требуя от разработчика обязательного наличия одного из методов управления.
Значения saCommit и saRollback определяют отправку одноименного метода на сервер с последующим закрытием используемой транзакции.
А значения SaCommitRetaining и saRollbackRetaining аналогично определят отправку методов Commit или Rollback, но оставят транзакцию открытой для последующего использования.
9.29 Вопрос.
Вызов метода Open для компонента IBQuery, в свойстве SQL которого задан оператор вызова хранимой процедуры, определит:
1. Старт новой транзакции, только если свойство IBTransaction.Activ = False;
2. Старт неявной транзакции сервера приложений;
3. Получение данных в рамках существующей транзакции;
4. Старт транзакции, только если IBTransaction.AutoStopAction = saNone;
5. Нет правильного ответа.
9.30 Вопросы по 5 лабораторной
.
Назначение, основные преимущества использования систем, построенных с применением клиент – серверных архитектур.
Технологии программной реализации многозвенной архитектуры, реализуемые средой разработки Delphi.
Наборы компонентов технологий доступа к серверным базам данных BDE и IBX, назначение основные свойства и методы.
Технологии реализации многозвенных архитектур, основные преимущества и недостатки.
Управление транзакциями, режимы видимости данных, уровни изоляции транзакций.
Реализация управления транзакциями в технологиях доступа IBExpress и BDE.
Серверные наборы данных, формирование, основные свойства, методы и события.
Основные механизмы управления данными в удаленных БД.
9.31 Задания СРСП
.
1. Выбор и защита технологии доступа к БД;
2. Ответить на контрольные вопросы пятого модуля;
3. Провести отладку режимов видимости данных и обновления НД клиента;
4. Защитить отчет по пятой лабораторной работе;
5. Защитить отчет по разделу 3.4 курсовой работы [2];
6. Разработать пример вопроса тестового задания по теме раздела.
9.32 Задания СРС
.
1. Изучить методические указания к пятой лабораторной работе;
2. Ответить на примеры тестовых заданий к пятому модулю;
3. Изучить код модуля данных учебного примера Example;
4. Изучение механизма событий в многозвенных ИС;
5. Изучение системы помощи (HELP), утилиты InteractivSQL, операторы: CREATE EXCEPTION;
6. Изучить конспект 9,10 лекций [3].
9.33 Демонстрация
.
Создания проекта для проектирования облегченного клиента.
Создания модуля данных.
Работы с компонентами доступа к БД.
Использования компонентов наборов данных.
Видимости данных приложений Console и Expert.
Управления транзакцией и видимостью данных.
10.1 Технологии доступа.
Технология работы с базами данных SQL – сервера «InterBase Express».
Основные компоненты и их использование.
Настройка соединения с БД.
Обновление наборов данных, формируемых при помощи SQL – операторов.
Технология Borland Database Engine (BDE).
Утилита «BDE Administrator».
Установка псевдонима БД.
Основные компоненты для работы с БД.
Тестирование функций компонентов модуля данных.
10.2 Определение.
Технология доступа в многопользовательской системе реализуемой в системе с клиент – серверной архитектурой, определяет взаимодействие клиентского приложения с серверной БД, включая:
- авторизацию пользователя (защита данных);
- управление видимостью данных;
- сетевое взаимодействие.
10.3 Реализация в Delphi
.
Технологии доступа к БД, поддерживаемые стандартным набором библиотек среды разработки Delphi:
Технология БД Компонент соединения
The Borland Database Engine (BDE). TDatabase
ActiveX Data Objects (ADO). TADOConnection
dbExpress. TSQLConnection
InterBase Express. TIBDatabase
10.4 Архитектура
.
Архитектура технологии доступа – иерархический набор драйверов и специализированных библиотек для работы с удаленными БД:
10.5 IBExpress
.
Библиотека компонентов реализующих технологию IBExpress расположена на вкладке палитры VCL «InterBase», и содержит наборы компонент для:
- соединения с БД(IBDatabase, IBTransaction);
- доступа к данным(IBTable, IBQuery, IBStoredProc, IBUpdateSQL, IBDataSet, IBSQL, IBClientDataSet);
- администрирования БД(IBDatabaseInfo, IBSQLMonitor, IBEvents, IBExtract).
10.6 Модуль данных
.
Не визуальный компонент реализуется как окно - контейнер для помещения в него компонент для работы с БД (TDataBase, TTable, TQuery, TStoredProc). А также, если необходимо, обработчиков событий этих компонентов и объектов полей соответствующих НД.
10.7 IBDataBase
.
Настройка основных свойств компонента IBDataBase подразумевает определение следующих параметров:
DataBaseName - для определения каталога и имени серверной базы данных;
Default Transaction – связный компонент транзакции, обязательно;
Params - определение параметров авторизации, задаваемых в редакторе компонента;
LoginPrompt - определяет режим авторизации, при значении true запрос диалога на ввод имени пользователя и пароля обязателен;
SQLDialect – определяет диалект, используемый при создании БД;
Connected – логическое свойство, показывающее активность соединения.
10.8 Редактор компонента
.
Задание имени пользователя (SYSDBA) и пароля (masterkey) выполняется в редакторе объекта, как показано рисунке: