Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 9.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
423.94 Кб
Скачать

If Databasel.InTransaction then Databasel.Commit;

Если имеется активная транзакция, то она подтверждается, а все сделанные в ее рамках изменения БД вступают в действие.

Свойство Transisolation типа TTranslsolation управляет уровнем изоляции транзакций. Уровень изоляции определяет, каким образом транзакция взаимо­действует с другими транзакциями. Ниже приводится список возможных значе­ний свойства Transisolation.

  • tiDirtyRead — разрешается чтение изменений в записях БД, сделанных в рамках других транзакций (другими пользователями). В связи с тем, что на момент чтения эти изменения являются неподтвержденными и впоследствии могут быть отменены, этот уровень изоляции обеспечивает минимальную изоляцию (защиту) от других транзакций.

  • tiReadCommitted — разрешается чтение только подтвержденных изменений в записях БД (по умолчанию). Если изменения еще не подтверждены, то чи­тается предыдущая версия записи.

  • tiRepeatableRead — считывание сразу всей БД, после чего изменения в БД, сделанные в рамках других транзакций, становятся невидимыми. Этот уро­вень обеспечивает максимальную изоляцию.

Для локальных БД dBase и Paradox допустимым является только значение tiDirtyRead. Для сервера InterBase значение tiDirtyRead интерпретируется как tiReadCoramitted.

3.3. Компонент Session

Компонент Session представляет собой текущий сеанс работы с БД и наряду с компонентом Database используется для управления соединением с БД. Однако если компонент Database позволяет задавать параметры одного соединения с БД или параметры соединения с одной БД, то компонент Session управляет всеми соединениями со всеми БД. Если программист при разработке приложе­ния не разместил на форме компонент Session, то будет создаваться динамиче­ский (временный) объект типа TSession (TSessionList).

Наряду с управлением соединениями с БД использование компонента session также позволяет:

  • управлять установками BDE;

  • управлять паролями БД.

Свойство SessionName типа String задает имя сеанса. Это имя устанавливается программистом, и его назначение не совпадает с назначением свойства Name, которое определяет имя самого компонента Session. Однако в частном случае эти имена могут совпадать.

Свойства сеанса, заданного компонентом Session, действуют на все связанные с ним компоненты Database. Напомним, что компонент Database связывается с сеансом через свое свойство SessionName, значение которого при разработке приложения выбирается из списка Инспектора объектов.

С помощью свойств DatabaseCount И Databases можно получить доступ к активным БД, с которыми в настоящее время установлено соединение. Свойст­во DatabaseCount типа Integer содержит число таких БД, а свойство Databases [Index: Integer] типа TDatabase представляет собой коллекцию (массив) объектов Database, используемых для соединения с этими БД. Доступ к отдельной БД можно получить по ее номеру в массиве (нумерация начинается с нуля, поэтому последняя БД имеет номер DatabaseCount-1).

Свойство KeepConnections типа Boolean определяет, сохранять ли соединение с БД, если с ней не связан ни один набор данных. Это свойство аналогично свойству KeepConnection соединения с отдельной БД, заданного компонентом Database. Разорвать соединение с БД можно, вызвав метод DropConnections.

Свойства NetFileDir и PrivateDir типа string позволяют задать каталоги для хранения управляющего сетевого файла с расширением NET (для таблиц Para­dox) и рабочего каталога для хранения временных файлов сеанса, соответственно.

Свойство Active типа Boolean управляет активностью сеанса. Установка значе­ния True этому свойству активизирует сеанс, а значения False — деактивизиру-ет его. При выполнении приложения управлять активностью сеанса можно так­же с помощью методов Open и Close, соответственно.

Непосредственно перед активизацией сеанса генерируется событие OnStartup типа TNotifyEvent.

Для управления установками BDE компонент session имеет средства, позво­ляющие читать и изменять параметры драйверов и псевдонимов БД. Рассмотрим наиболее важные из них.

Методы GetAliasNames и GetAliasParams обеспечивают получение информации о псевдонимах BDE. Процедура GetAliasNames (List: TStrings) позволяет по­лучить список псевдонимов BDE. Список заносится в объект, заданный пара­метром List типа TStrings, которым может быть, например, список строк ком­понента ListBox. Приведем соответствующий пример:

procedure TForml.ButtonlClick{Sender: TObject);

begin

Sessionl.GetAliasNames(ListBoxl.Items) ;

end;

Здесь нажатие кнопки Buttonl приводит к загрузке в компонент ListBoxl спи­ска псевдонимов BDE. Предыдущее содержимое компонента ListBoxl теряется.

Процедура GetAliasParams (const AliasName: String; List: TStrings) BO3-вращает параметры конкретного псевдонима, имя которого задано параметром процедуры AliasName. Если имя псевдонима указано неправильно, то генериру­ется исключительная ситуация. Например:

procedure TForml.Button2Click(Sender: TObject);

begin

Sessionl.GetAliasParams(Editl.Text, ListBoxl.Items);

end;

При нажатии на кнопку Button2 в компонент ListBoxl заносятся параметры псевдонима, введенного в компонент Editl. Предыдущее содержимое компо­нента ListBoxl теряется.

Для добавления и удаления псевдонимов используются методы AddAlias и DeleteAlias, соответственно. Процедура AddAlias (const Name, Driver: String; List: TStrings) добавляет новый псевдоним с именем Name. Параметр Driver определяет драйвер нового псевдонима, а параметр List содержит спи­сок параметров псевдонима. Пример создания псевдонима для локальной БД:

procedure TForml.Button3Click(Sender: TObject);

begin

Sessionl.AddAlias(Editl.Text, 'STANDARD', Memol.Lines);

end;

В процедуре создается новый псевдоним, имя которого набрано в компоненте Editi. Псевдоним предназначен для работы с локальными БД dBase или Paradox, на что указывает тип standard псевдонима. Напомним, что локальные БД этих типов работают под управлением драйвера standard. Параметры псев­донима должны быть указаны в компоненте Memol. Необходимо указать хотя бы расположение БД, например, введя в поле редактирования следующий текст:

PATH=d:\data

Имя нового псевдонима должно быть уникальным: если указанный псевдоним уже существует, то генерируется исключительная ситуация.

В качестве примера рассмотрим следующую процедуру:

procedure TForrnl.Button3Click(Sender: TObject);