На этом шаге мы рассмотрим компонент TIBDatabase.
Компонент TIBDatabase создает соединение с БД InterBase. Свойства компонента TIBDatabase перечислены в таблице 1.
| Свойство | Описание |
|---|---|
| property DatabaseName: String; | Указывает имя физической БД, с которой связан компонент (см.ниже) |
| property DBParamByDPB:[const Idx: Integer] : String; | Позволяет проверить или установить заново какой-либо параметр БД |
| property DBSQLDialect: Integer; | Содержит диалект языка SQL, который используется БД |
| property DefaultTransaction: TIBTransaction; | Содержит ссылку на транзакцию, заданную по умолчанию |
| property Handle: TISC_DB_Handle; | Содержит дескриптор соединения. Используется для прямого обращения к API-функциям InterBase |
| property HandleIsShared: Boolean; | Содержит True, если используется разделяемый дескриптор соединения |
| property IdleTimer: Integer; | Указывает время в миллисекундах, по истечении которого автоматически разрывается соединение с БД, если за это время к ней не было обращения |
| property IsReadOnly: Boolean; | Содержит True, если БД работает только в режиме чтения |
| property Params: TStrings; | Содержит список параметров, которые передаются серверу в момент соединения |
| property SQLDialect: Integer; | Содержит диалект языка SQL, который используется компонентом |
| property SQLObjectCount: Integer; | Содержит количество объектов SQL, связанных с данным соединением. К объектам SQL относятся InterBase-наборы данных, IBSQL и BLOB |
| property SQLObjects [Index:Integer]: TIBBase; | Открывает индексированный доступ к SQL-объектам |
| property TraceFlags: TTraceFlags; | Содержит флаги, определяющие различные состояния БД, которые должны прослеживаться в SQL-мониторе(см. ниже) |
| property TransactionCount: Integer; | Указывает количество транзакций, связанных c данный момент с компонентом |
| property Transactions [Index: Integer]: TIBTransaction; | Открывает индексированный доступ к связанным с компонентом транзакциям |
Свойство DatabaseName для локального сервера содержит имя файла БД. При связи с удаленной БД формат имени следующий:
Компонент может управлять несколькими транзакциями одновременно. Свойство DefaultTransaction ссылается на транзакцию, которой компонент управляет в данный момент. Определение типа для свойства TraceFlags:
type TTraceFlag = (tfQPrepare, tfQExecute, tfQFetch, tfError, tfStmt,
tfConnect, tfTransact, tfBlob, tfService, tfMisc);
TTraceFlags = set of TTraceFlag;
Здесь перечислены следующие флаги:
Методы компонента TIBDatabase перечислены в таблице 2.
| Метод | Описание |
|---|---|
| function AddTransaction (TR: TIBTransaction) : Integer; | Устанавливает связь между компонентом и новой транзакцией |
| procedure ApplyUpdates (const DataSets:array of TIBCustomDataSet) ; | Подтверждает кэшированные изменения |
| procedure CheckActive; | Проверяет активность компонента и возвращает ошибку, если связь не установлена |
| procedure CheckDatabaseName; | Возбуждает ошибку, если свойство DatabaseName не заполнено |
| procedure CheckInactive; | Возбуждает ошибку, если связь с БД установлена |
| procedure Close; | Разрывает соединение с БД и закрывает все связанные с компонентом НД. Повторное открытие компонента не открывает заново НД |
| procedure CloseDataSets; | Закрывает все связанные с компонентом наборы данных, но в отличие от метода Close не разрывает связь с сервером и БД |
| procedure CreateDatabase; | Создает новую БД, используя свойство Params как перечень параметров новой БД |
| procedure DropDatabase; | Удаляет существующую БД |
| function FindTransaction(TR: TIBTransaction):Integer; | Возвращает индекс указанной транзакции |
| procedure ForceClose; | Закрывает БД, даже если в результате операции возникла ошибка |
| procedure GetFieldNaraes (const TableName: String; List: TStrings); | Возвращает список имен всех столбцов указанной таблицы. К моменту обращения к методу связь с БД должна быть установлена |
| procedure GetTableNames (List: TStrings; SystemTables: Boolean = False); | Возвращает список всех таблиц БД. Если параметр SystemTables имеет значение True, список дополняется именами системных таблиц |
| function IndexOf DBConst (st: String): Integer; | Возвращает индекс параметра по его имени (если возвращается -1, параметр с нужным именем не найден) |
| procedure Open; | Устанавливает связь с БД |
| procedure RemoveTransaction(Idx: Integer); | Отсоединяет указанную транзакцию от компонента |
| procedure RemoveTransactions; | Отсоединяет все транзакции от компонента |
| procedure SetHandle; | Устанавливает дескриптор для БД |
| procedure TestConnected: Boolean; | Проверяет связь с БД и возвращает True, если связь установлена |
С помощью метода CreateDatabase можно создать новую базу данных. Для этого в свойство DatabaseName помещается информация о месторасположении (компьютер, путь доступа) и имя файла создаваемой БД, а в набор Params - параметры БД, например, такие:
USER "SYSDBA" PASSWORD "masterkey" PAGE_SIZE=4096 DEFAULT CHARACTER SET WIN1251
После выполнения метода будет создана полноценная БД с файлом по адресу, указанному в свойстве DatabaseName.
События компонента TIBDatabase перечислены в таблице 3.
| Событие | Описание |
|---|---|
| property OnDialectDowngradeWarning: TNotifyEvent; | Возникает в момент открытия БД, если номер используемой в ней версии диалекта SQL ниже указанной в свойстве SQLDialect |
| property OnIdleTimer: TNotifyEvent; | Возникает, если время "простоя" БД превысит указанное в свойстве IdleTimer |
| TDatabaseLoginEvent = procedure (Database: TIBDatabase;LoginParams: TStrings) of object; property OnLogin: TDatabaseLoginEvent; |
Возникает, если свойство LoginPrompt содержит True. В обработчике события регистрационное имя и пароль необходимо поместить во временный список LoginParams |
На следующем шаге мы рассмотрим компонент TIBTransaction.