M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

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

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