Компонент TIBDatabase

Так как для доступа к базе данных компонентам InterBase Express не требуется BDE, то для создания соединения используется всего одно свойство DatabaseName. В нем необходимо указать полный путь (включая имя сервера) к выбранному файлу БД с расширением gdb. Для этого можно воспользоваться стандартным диалогом выбора файла при щелчке на кнопке свойства в Инспекторе объектов.

Компонент имеет собственный редактор, который позволяет задать значения основных свойств, обеспечивающих соединение с базой данных (рис. 18.1).

Рис. 18.1. Редактор компонента TIBDatabase

Настройка соединения проводится следующим образом.

На панели Connection выбирается требуемый сервер InterBase (локальный или доступный удаленно), затем в списке Protocol определяется используемый сетевой протокол и при помощи кнопки Browse выбирается файл базы данных.

На панели Database Parameters задаются имя пользователя, его пароль и роль. Также можно выбрать и набор шрифтов для языковой адаптации приложения (список Character Set).

Для задания вводимых при подключении параметров (имя пользователя, пароль, схема, роль и т. д.) также можно использовать свойства Params и LoginPrompt.

Путь к файлу базы данных задается свойством

property DatabaseName: String;

Соединение включается и отключается свойством

property Connected : Boolean;

При этом свойство

property AllowStreamedConnected : Boolean;

управляет включением соединения при запуске приложения и служит дополнительным предохранителем. При значении False свойство запрещает открытие соединения при запуске приложения, даже если свойство Connected имело значение True. Так как часто приложение отлаживается на тестовой базе данных, а используется на реальной, то неверный путь в свойстве DatabaseName и не отключенное на этапе разработки свойство connected приведет к возникновению ошибки открытия соединения при запуске приложения на другом компьютере.

Параметры соединения, которые нельзя задать свойствами, устанавливаются свойством

property Params: TStrings;

в котором в каждой строке задается имя параметра и затем через знак равенства — его значение. Наиболее распространенный пример использования свойства Params — задание имени пользователя и его пароля:

user_name=sysdba password=masterkey

Свойство

property DBParamByDPB: [const Idx: Integer]: String;

позволяет получить доступ к отдельным параметрам соединения, не обращаясь к свойству Params.

 Примечание

Полный список индексов всех возможных параметров соединения Interbase можно найти в файле \Delphi7\Source\Vcl\IBHeader.pas.

Если соединение настроено правильно, метод

procedure TestConnected: Boolean;

возвращает значение True, иначе — False. Свойство

property IdleTimer: Integer;

задает временной интервал до отключения неиспользуемого соединения.

В компоненте TiBDatabase отсутствуют средства управления транзакциями, которые вынесены в отдельный компонент TiBTransaction (см. ниже).

Свойство

property DefaultTransaction: TiBTransaction;

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

Общее число связанных с данным соединением транзакций возвращает свойство

property TransactionCount: Integer;

а их полный перечень содержится в индексированном списке свойства

property Transactions [Index: Integer]: TIBTransaction;

Добавить к списку используемых новую транзакцию можно при помощи метода

function AddTransaction(TR: TIBTransaction): Integer;

Отменить связь между соединением и компонентом транзакции позволяет метод

procedure RemoveTransaction(Idx: Integer);

Но можно поступить и более радикально. Метод

procedure RemoveTransactions; 

отменяет связи со всеми транзакциями.

Используемый в методе RemoveTransaction индекс транзакции может быть найден методом

function FindTransaction (TR: TIBTransaction): Integer; 

а метод

function FindDefaultTransaction: TIBTransaction;

возвращает транзакцию по умолчанию.

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

procedure AddEventNotifier(Notifier: IIBEventNotifier);

который связывает с соединением либо интерфейс IIBEventNotifier, либо объект TIBEvents.

Парный ему метод

procedure RemoveEventNotifier{Notifier: IIBEventNotifier);

разрывает связь соединения с объектом-обработчиком событий. Свойство

type

TTraceFlag = (tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt,

tfConnect, tfTransact, tfBlob, tfService, tfMisc);

TTraceFlags = set of TTraceFlag;

property TraceFlags: TTraceFlags;

позволяет управлять сведениями о выполнении запросов, возвращаемыми компонентом TSQLMonitor (см. ниже описание этого компонента).

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

EIBClientError. 

Методы

procedure CheckActive;

И

procedure Checklnactive;

проверяют, функционирует или нет соединение. Метод

procedure CheckDatabaseName;

проверяет, заполнено ли свойство DatabaseName.

Компонент TiBDatabase позволяет выполнять некоторые операции с метаданными базы данных.

При помощи метода

procedure CreateDatabase;

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

Имя файла новой базы данных должно быть указано в свойстве

procedure DropDatabase;

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

DatabaseName.

Список List имен таблиц, имеющихся в базе данных, возвращает метод

procedure GetTableNames(List: TStrings; SystemTables: Boolean = False);

При этом параметр SystemTables управляет включением в список имен системных таблиц.

Метод

procedure GetFieldNames(const TableName: string; List: TStrings);

аналогичным образом возвращает список полей для таблицы, заданной параметром TableName.

Методы-обработчики событий компонента TiBDatabase представлены в табл. 18.1.

Таблица 18.1. Методы-обработчики событий компонента TiBDatabase

Объявление

Тип

Описание

property Af terConnect: TNotifyEvent;

Pb

Выполняется после открытия  соединения

property AfterDisconnect: TNotifyEvent;

Pb

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

property Bef oreConnect: TNotifyEvent;

Pb

Выполняется перед открытием  соединения

property BeforeDisconnect: TNotifyEvent;

Pb

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

property OnDialectDowngradeWarning: TNotifyEvent;

Pb

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

property OnldleTimer: TNotifyEvent;

Pb

Вызывается по истечении  времени, заданного свойством

dleTimer

TDatabaseLoginEvent = procedure (Database : TiBDatabase; LoginParams: TStrings) of object;

property OnLogin: TDatabaseLoginEvent ;

Pb

 

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

 


Знаете ли Вы, в чем фокус эксперимента Майкельсона?

Эксперимент А. Майкельсона, Майкельсона - Морли - действительно является цирковым фокусом, загипнотизировавшим физиков на 120 лет.

Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
- Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.

В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.

Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в 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