Самоучитель по Delphi 7 для профессионалов


Соединение с источником данных



Все обращения из приложения к таблицам одной базы данных осуществляются через одно соединение, на которое замыкаются все компоненты доступа к данным, имеющие соответствующие значения свойства 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.


Содержание раздела