В этой модели транзакция активна все время, пока пользователь редактирует данные. Одно из главных достоинств dbExpress это короткое время жизни транзакций. Для использования этого достоинства управление транзакциями должно быть изменено на следующую схему:
l Пользователь редактирует данные в ClientDataSet (или SimpleDataset)
l Старт транзакции
l Вызов ApplyUpdates
l Commit или Rollback
Для изменения приложения в соответствии с этой схемой, нужно переместить каждый вызов StartTransaction в место, где будет выполняться соответствующий Commit. Затем между ними вставить вызов ApplyUpdates.
Компоненты TDatabase и SQLConnection имеют методы StartTransaction, Commit и Rollback.
В отличие от BDE dbExpress позволяет работать с несколькими транзакциями, активными в один и тот же момент. Для поддержки такого режима методы StartTransaction, Commit и Rollback принимают параметр TTransactionDesc. Он объявлен как:
TTransactionDesc = packed record
TransactionID : longword;
GlobalID : longword;
IsolationLevel : TTransactionIsolationLevel;
CustomIsolation: longword;
end;
Для каждой отдельной транзакции вы должны объявить переменную типа TTransactionDesc и установить TransactionId в число, которое должно быть уникально между всеми активными транзакциями. Поле GlobalId используется только в Oracle. IsolationLevel может быть xilDirtyRead, xilReadCommitted или xilRepeatableRead. Поле CustomIsolation пока не поддерживается.
Поскольку BDE не поддерживает более одной одновременной транзакции, все, что нам нужно это объявить одну переменную типа TTransactionDesc в интерфейсной части модуля, который используется всеми остальными модулями приложения (которые используют явные транзакции). После этого в событии OnCreate формы DataModule1 установим TransactionID этой переменной в 1, а IsolationLevel в xilReadCommitted или xilRepeatableRead, а во всех вызовы StartTransaction, Commit и Rollback будем подставлять эту переменную как параметр.
var
DM1: TDM1;
MyTrans:TTransactionDesc;
. . . . .
procedure TDM1.DataModuleCreate(Sender: TObject);
begin
MyTrans.TransactionID:=1;
MyTrans.IsolationLevel:=xilRepeatableRead;
end;
Замечание: Напоминаем, что для быстрого переключения между кодом с обработчиками событий и формами удобно использовать клавишу F12.
Рассмотрим вкратце компоненты стрницы dbExpress.
С помощью компонента TSQLConnection осуществляется связь вашей программы с БД. Для того, чтобы обеспечить максимальную универсальность компания Borland вынесла все специвическия для каждой платформы СУБД функции в несколько различных *.dll –файлов. После того как вы укажите парамеры соединения с сервером БД (имя сервера, имя Базы данных, имя пользователя и пароль для подключения к БД) имя одного из этих файлов автоматически будет подставлено средой Delphi в свойство DriverName. Разместим на форме DataModule компонент TSQLConnection, дважды щелкнем по нему мышью и настроим его свойства, как показано на рис. 3.2.
Рисунок 3.2 – настройка компонента TSQLConnection.
Обратите внимание, если файл вашей БД расположен по другому пути строка параметра Database должна отличаться от приведенной на рисунке. Теперь нажимаем «ОК» и пробуем установить соединение с БД. Для этого меняем с помощью ObjectInspector значение свойства Connected на «True» (при этом у нас может быть запрошен пароль. На этапе проектирования программы для удобства и экономии времени запрос пароля можно отключить установив в свойстве LoginPrompt объекта TSQLConnection значение False). Если попытка установки свойства Connected закончилась успешно, значит большинство настроек выполнено правильно и можно приступать к дальнейшим действиям. Для удобства дкальнейшей работы рекомендуем вам переименовать (поменять свойство Name) компонента TSQLConnection на MyBase.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.