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

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

 


Знаете ли Вы, что cогласно релятивистской мифологии "гравитационное линзирование - это физическое явление, связанное с отклонением лучей света в поле тяжести. Гравитационные линзы обясняют образование кратных изображений одного и того же астрономического объекта (квазаров, галактик), когда на луч зрения от источника к наблюдателю попадает другая галактика или скопление галактик (собственно линза). В некоторых изображениях происходит усиление яркости оригинального источника." (Релятивисты приводят примеры искажения изображений галактик в качестве подтверждения ОТО - воздействия гравитации на свет)
При этом они забывают, что поле действия эффекта ОТО - это малые углы вблизи поверхности звезд, где на самом деле этот эффект не наблюдается (затменные двойные). Разница в шкалах явлений реального искажения изображений галактик и мифического отклонения вблизи звезд - 1011 раз. Приведу аналогию. Можно говорить о воздействии поверхностного натяжения на форму капель, но нельзя серьезно говорить о силе поверхностного натяжения, как о причине океанских приливов.
Эфирная физика находит ответ на наблюдаемое явление искажения изображений галактик. Это результат нагрева эфира вблизи галактик, изменения его плотности и, следовательно, изменения скорости света на галактических расстояниях вследствие преломления света в эфире различной плотности. Подтверждением термической природы искажения изображений галактик является прямая связь этого искажения с радиоизлучением пространства, то есть эфира в этом месте, смещение спектра CMB (космическое микроволновое излучение) в данном направлении в высокочастотную область. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution