На этом шаге мы рассмотрим компонент 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.