Создание простейшего клиента БД в Delphi. Краткое описание интерфейса Turbo Delphi 2006. Примитивная программа работы с БД, страница 3

В этой модели транзакция активна все время, пока пользователь редактирует данные. Одно из главных достоинств 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.