Все обращения из приложения к таблицам одной базы данных осуществляются через одно соединение, на которое замыкаются все компоненты доступа к данным, имеющие соответствующие значения свойства DatabaseName (см. ниже).

Все управление одиночным соединением с какой-либо базой данных в BDE осуществляется компонентом TDatabase (табл. 16.5). В процессе работы компонент активно использует параметры псевдонимов и драйверов BDE.

Таблица 16.5. Свойства и методы компонента TDatabase

Объявление

Тип

Описание

Свойства

property AliasName: string;

Pb

Задает имя псевдонима BDE используемой базы данных

property Connected: Boolean;

Pb

Управляет включением соединения с базой данных

property DatabaseName: string;

Pb

Определяет имя базы данных

property DataSetCount:  Integer;

Ro

Возвращает число открытых наборов данных, работающих через данное соединение

property DataSets [Index:  Integer]: TDBDataSet;

Ro

Индексированный список всех объектов открытых наборов данных этого соединения

property Directory: string; 

Pu

Определяет текущий каталог для баз данных Paradox и dBASE

property DriverName: string; 

Pb

Содержит имя драйвера базы данных

property Exclusive: Boolean; 

Pb

При значении True другие приложения не могут работать с базой данных одновременно с этим компонентом

type HDBIDB: Longint; property Handle: HDBIDB; 

Pu

Дескриптор BDE. Используется для прямых вызовов функций API BDE

property HandleShared: 

Boolean;

 

Pu

При значении True дескриптор BDE компонента доступен в компонентеTSession

property InTransaction:  Boolean 

Ro

Показывает состояние транзакции. При значении True транзакция выполняется

property IsSQLBased: Boolean;

Ro

При значении True соединение работает через драйвер SQL Links

property KeepConnection:  Boolean; 

 

Pb

При значении True соединение продолжает оставаться активным после закрытия всех наборов данных. При значении False после закрытия последнего набора данных соединение закрывается

type TLocale: Pointer;  property Locale: TLocale; 

Ro

Указывает на языковый драйвер BDE, используемый при работе с базой данных

property LoginPrompt: Boolean; 

Pb

Управляет отображением стандартного диалога регистрации пользователя при подключении к серверу

property Params: TStrings; 

 

Pb

Содержит список значений параметров псевдонима BDE, которые пользователь задает перед подключением к серверу

property Session: TSession

Ro

Указывает на компонент TSession,  который управляет работой данного  компонента

property SessionAlias: Boolean;

Ro

 При значении True при подключении к БД используется псевдоним сессии

property SessionName: string;

Pb

Содержит имя сеанса, который управляет работой компонента

property Readonly: Boolean;

Pb

Управляет режимом доступа к данным  "только для чтения"

property Temporary: Boolean;

Pu

Значение True говорит о том, что экземпляр компонента создан во время выполнения

type

TTraceFlag = (tfQPrepare, tfQExecute, tfError, tfStmt, tf Connect, tfTransact, tfBlob, tfMisc, tfVendor, tfDataln, tfDataOut) ;

TTraceFlags = set of TTraceFlag;

property TraceFlags: TTraceFlags;

Pu

 Определяет перечень операций,  выполнение которых отображается в утилите SQL Monitor при выполнении  приложения

 

 

type TTransIsolation = (tiDirtyRead, tiReadCommitted, tiRepeatableRead) ;

property Translsolation: TTransIsolation;

Pb

! Определяет уровень изоляции  транзакций:

  •  tiDirtyRead— незавершенное  чтение;
  •  tiReadCommitted — завершенное  чтение;
  •  tiRepeatableRead — повторяемое чтение

Методы

procedure ApplyUpdates (const DataSets: array of TDBDataSet);

Pu

 

 Фиксирует все изменения в наборах данных, работающих через это соединение, в базе данных

procedure Close;

Pu 

Закрывает все открытые наборы  данных и соединение

procedure CloseDatasets;

Pu

 Закрывает все открытые наборы  данных, работающие через это соединение

procedure Commit;

Pu

Завершает выполнение текущей транзакции и фиксирует все изменения в базе данных

function Execute (const SQL: string; Params : TParams = nil; Cache: Boolean = False; Cursor: phDBICur = nil) : Integer;

Pu

Выполняет запрос SQL без использования компонента TQuery. Текст запроса содержится в параметре SQL. Параметры запроса определяются параметром Params. Режим кэширования изменений включается параметром Cache. Параметр Cursor может использоваться при работе с функциями BDE, использующими курсор набора данных (см. гл. 14)

procedure FlushSchemaCache (const TableName: string);

Pu

Изменяет представление о структуре таблиц БД, загруженной в память

procedure Open;

Pu

Открывает соединение

procedure Rollback;

Pu

Отменяет все операции текущей транзакции и завершает ее

procedure StartTransaction;

Pu

Начинает выполнение транзакции

procedure ValidateName (const Name: string) ;

Pu

Вызывает исключительную ситуацию, если база данных Name уже открыта в текущей сессии

Методы-обработчики событий

type TLoginEvent = procedure (Database: TDatabase; LoginParams: TStrings) of object;

property OnLogin: TLoginEvent;

Pb

Вызывается при регистрации пользователя на сервере

property AfterConnect: TNotifyEvent;

Pb

Вызывается после подключения

property AfterDisconnect: TNotifyEvent;

Pb

Вызывается после отключения

property BeforeConnect: TNotifyEvent;

Pb

Вызывается перед подключением

property AfterDisconnect: TNotifyEvent;

Pb

Вызывается перед отключением

Обычно компонент TDatabase размешается в модуле данных приложения.

Для определения базы данных (сервера), с которой приложение устанавливает соединение при помощи компонента TDatabase, чаще используется свойство AliasName. Свойства  DatabaseNameи DriverNameпредоставляют  альтернативный способ создания соединения.

Если соединение задано свойством AliasName,то свойство DatabaseName

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

Например, при переключении приложения на другую базу данных можно изменить только значение псевдонима в компонентеTDatabase. Если все компоненты наборов данных подключены к временному псевдониму компонентаTDatabase, то они автоматически переключатся на новую БД.

Дополнительные возможности управления наборами данных при переключении соединения предоставляют свойства Connected и KeepConnection. Они позволяют одновременно с соединением закрыть все активные наборы данных.

Если наборы данных приложения подключены к базе данных через компонентTDatabase, то перед их открытием необходимо установить соединение с БД. Соединение с БД устанавливается при помощи методаopen. Если попытаться активизировать набор данных без этого метода, то соединение будет установлено автоматически.

Аналогичная картина возникает при закрытии наборов данных и отключении от БД. Дополнительное средство управления в этом случае предоставляет свойствоKeepConnection. Если оно равно значению True, то при закрытии последнего открытого набора данных соединение остается открытым. В противном случае соединение автоматически закрывается.

Это позволяет управлять соединением в различных исходных ситуациях. При большой загруженности сервера бывает необходимо прерывать соединение каждый раз. Если требуется разгрузить сетевой график, то соединение лучше оставлять включенным.

При подключении к базе данных довольно часто требуется задать значения для параметров драйвера BDE. Для этого используется свойствоParams, представляющее собой обычный список. В нем необходимо задавать названия изменяемых параметров и их новые значения:

USERNAME=SYSDBA 

PASSWORD=masterkey

Значения параметров можно задавать как статически, так и динамически во время выполнения.

Компонент TDatabase может облегчить подключение к базам данных с регистрацией пользователей. При регистрации на сервере достаточно задать имя пользователя, пароль в свойстве Params (см. выше) и установить для свойства LoginPrompt значение False. Эта комбинация работает как во время выполнения, так и во время разработки.

Примечание

Для организации доступа к защищенным паролем таблицам Paradox используется метод AddPassword компонента TSession (см. выше).

Дополнительные возможности обработки регистрации пользователя дает единственный метод-обработчикonLogin, программный код которого выполняется вместо появления стандартного диалога ввода имени и пароля. Это позволяет разработчику создавать собственные сценарии регистрации пользователей.

Для обеспечения доступа к функциям API BDE используется свойство Handle (BDE играет важную роль при создании соединения).

Управление выполнением транзакций осуществляется при помощи методовStartTransaction, Commit и RollBack.