Разное
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Возвести в степень
Категория: Математика
Категория: Математика
Создание кнопки на панели в IE
Категория: Интернет и Сети
Категория: Интернет и Сети
Как нарисовать фрактал
Категория: Математика
Категория: Математика
Упаковка таблиц в BDE
Категория: Базы данных
Категория: Базы данных
Упаковать *.mdb-файл
Категория: Базы данных
Категория: Базы данных
Программно скрыть MainMenu
Категория: Компоненты
Категория: Компоненты
Округление целого числа до 5
Категория: Математика
Категория: Математика
Вывод текста на канву Canvas
Категория: Компоненты
Категория: Компоненты
Прочитать содержимое папки
Категория: Файловая система
Категория: Файловая система
Вставить иконки в Grid
Категория: Компоненты
Категория: Компоненты
FIBPlus. Свойства и методы. TpFIBDatabase
Компонент, инкапсулирующий соединение с базой данных сервера InterBase/Firebird
Свойства
AliasName
Группа опций, которая позволяет задать псевдоним базы данных. Псевдоним хранится в реестре Windows и содержит информацию, необходимую для подключения к БД.
AutoReconnect
property AutoReconnect: Boolean default False;
Свойство, которое позволяет автоматически соединяться с БД в случае если соединение закрыто, а приложение пытается выполнить обратиться к БД. В сочетании со свойством Timeout позволяет создать В«полуоффлайнВ» приложение. Приложение, которое будет автоматически открывать соединение на время выполнения запросов и закрывать его после выполнения.
BlobSwapSupport
Группа опций, которая позволяет задать режим кэширования BLOB-полей на клиенте.
Подробное описание использования этой опции приведено в разделе Кэширование блоб-полей на клиенте
CacheShemaOptions
Группа опций, которая позволяет задать режим кэширования информации, получаемой из базы данных и от сервера InterBase, которая появляется при работе приложения: подготовленные запросы, служебная информацию FIBPlus о значениях по умолчанию для полей, и многое другое.
FIBPlus позволяет использовать эту информацию многократно, а также не терять ее между сеансами.
Свойство LocalCacheFile позволяет задать имя файла, в котором будет сохраняться эта информация. AutoSaveToFile отвечает за автоматическую запись кеша в файл при закрытии приложения. AutoLoadFromFile отвечает за загрузку кеша из файла. И, наконец, ValidateAfterLoad указывает, стоит ли проверять сохраненный кеш после загрузки.
Connected
Группа опций, которая позволяет управлять состоянием соединения с базой данных.
ConnectParams
Группа опций, которая позволяет задать основные параметры подключения.
DBName
Группа опций, которая позволяет задать строку для подключения. Строка подключения может включать имя сервера, протокол и базу данных. Так, например, для локального подключения пишется только имя файла:
D:IB7BookProgramBaseBpexampl.ib
• Для соединения с удаленным сервером по протоколу TCP/IP нужно дописать имя сервера: netserver:D:IB7BookProgramBaseBpexampl.ib
• Для соединения с удаленным сервером по протоколу TCP/IP и порту 3051 нужно
дописать порт netserver/3051:D:IB7BookProgramBaseBpexampl.ib
• Для протокола NetBEUI netserverD:IB7BookProgramBaseBpexampl.
• Для IPX/SPX (NetWare servers) netserver@vol1:IB7BookProgramBaseBpexampl.
• для UNIX или Linux сервера netserver:/user/IB7Book/Program/Base/Bpexampl.
DBParams
Группа опций, которая позволяет задать параметры подключения. Частично пересекается с опциями ConnectParams. Все возможные параметры можно добавлять напрямую сразу в буфер, например:
Дополнительные параметры подключения можно посмотреть в документации к серверу (APIGuide.pdf, DevGuide.pdf).
DefaultTransaction
Группа опций, которая позволяет задать транзакцию по умолчанию. При присоединении компонентов TpFIBDataSet,
TpFIBQuery, TpFIBStoredProc к компоненту TpFIBDatabase свойство Transaction этого компонента будет автоматически скопировано в свойство Transaction нового компонента.
DefaultUpdateTransaction
Группа опций, которая позволяет задать транзакцию по умолчанию для обновления в компонентах TpFIBDataSet. Т.е. при заполнении свойства Database компонента TpFIBDataSet будет автоматически установлено свойство
UpdateTransaction.
DesignDBOptions
Группа опций, которая позволяет задать поведение компонента TpFIBDatabase в режиме проектирования.
ddoIsDefaultDatabase определяет, будет ли данный компонент соединением по умолчанию для добавляемых компонентов TpFIBDataSet, TpFIBQuery, TpFIBStoredProc. Если опция включена, то при добавлении новых компонентов в проект им будет автоматически присваиваться свойство Database и, как следствие, Transaction и UpdateTransaction.
ddoStoreConnected определяет, будет ли сохраняться состояние подключения при
компиляции приложения.
ddoNotSavePassword определяет, будет ли сохраняться пароль для подключения в
свойствах компонента. Если опция включена, то пароль сохранен не будет.
LibraryName
Группа опций, которая позволяет задать имя клиентской библиотеки InterBase/Firebird. Данная опция может быть изменена только в зарегистрированной версии FIBPlus.
SaveAliasParamsAfterConnect
Если включена эта опция, то при удачном соединении с базой данных информация будет записана в реестр Windows как клиентский псевдоним (псевдоним задается в свойстве AliasName)
SQLDialect
Эта опция позволяет задать диалект коннекта к базе данных
SQLLogger
Эта опция позволяет задать компонент для логгирования обращений к БД. Подробнее смотрите в описании компонента TSQLLogger.
SynchronizeTime
Если включена эта опции, то при успешном подключении к БД время рабочей станции будет синхронизировано с временем на сервере.
TimeOut
Если значение свойства Timeout отлично от нуля, то оно определяет время допустимого простоя в миллисекундах. Если за указанный промежуток времени через коннект не прошло ни одного действия (запроса, фетча данных, фетча блоба), то автоматически будет вызвано событие OnIdleConnect. Если на это событие нет обработчика, то коннект будет автоматически закрыт.
UpperOldNames
Если установлена эта опция, все имена в SQL-запросах будут переводиться в верхний регистр. Это позволяет избежать ошибок с именами объектов при написании запросов.
UseLoginPrompt
Если установлена эта опция, то, несмотря на пароль, прописанный в информации для подключения, будет вызваться диалог подключения.
UseRepositories
Эта опция позволяет задать режим использования репозиториев:
urFieldsInfo использовать репозиторий информации о полях
urDataSetInfo использовать репозиторий информации о датасетах
urErrorMessagesInfo использовать репозиторий информации об ошибках
Подробно работа с репозиториями описывается в разделе В«Работа с репозиториямиВ». Также Вы можете посмотреть примеры из комплекта FIBPlusExamples:
WaitForRestoreConnect
Эта опция позволяет задать интервал времени в миллисекундах, по истечении которого будет производиться очередная попытка восстановить соединение. Подробнее об обработке потери соединения Вы можете прочитать в разделе Обработка потери соединения
UseBlrToTextFilter
Включает и выключает обработку блоб полей с подтипами Blr (2), Acl(3). Дело в том что блоб поля с подтипом 2 и более используется сервером для внутренних целей. Например в блобах с подтипом 2 хранятся скомпилированные в blr код триггера и процедуры. Если включить опцию UseBlrToTextFilter, то для таких полей будет применен соответствующий фильтр.
Описание событий
AfterConnect
procedure (Sender: Tobject);
Событие возникает после соединения с базой данных посредством использования метода
Open или установки в истину свойства Connected.
AfterDisconnect
procedure (Sender: Tobject);
Событие генерируется после отсоединения от БД методом Close или установкой в False
свойства Connected.
AfterEndTransaction
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);
Событие возникает после завершения транзакции, при этом передаются завершившаяся транзакция и действие, которым она завершилась.
AfterLoadBlobFromSwap
procedure (const TableName, FieldName: String; RecordKeyValues: array of Variant; const FileName: String);
Событие возникает после загрузки BLOB-поля c диска.
AfterRestoreConnect
procedure (Database: TFIBDatabase);
Событие возникает после того, как соединение было успешно восстановлено после разрыва. Подробное описание работы смотрите в разделе "Обработка потери соединения" и в демонстрационном примере:
FIBPlusExamplessrcConnectionLost
AfterSaveBlobToSwap
procedure (const TableName, FieldName: String; RecordKeyValues: array of Variant; const FileName: String);
Событие возникает после сохранения BLOB-поля на диск
AfterStartTransaction
procedure (Sender: Tobject);
Cобытие возникает после старта транзакции.
BeforeConnect
procedure (Database: TFIBDatabase; LoginParams: TStrings; var DoConnect: Boolean);
Событие возникает непосредственно перед попыткой соединения с БД.
BeforeDisconnect
procedure (Sender: Tobject);
Событие возникает перед отсоединением от БД.
BeforeEndTransaction
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);
Событие возникает перед завершением транзакции.
BeforeLoadBlobFromSwap
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);
Событие возникает перед загрузкой BLOB-поля из кеша. Подробнее смотрите раздел Кеширование блоб-полей на клиенте
BeforeSaveBlobToSwap
procedure (const TableName, FieldName: String; RecordKeyValues: array of Variant; Stream: TStream; var FileName: String; var CanSave: Boolean);
Событие возникает перед сохранением BLOB-поля на диск.
BeforeStartTransaction
procedure (Sender: Tobject);
Событие возникает перед стартом транзакции.
OnAcceptCacheSchema
procedure (const ObjName: String; var Accept: Boolean);
Событие возникает в момент принятиия решения о том, стоит ли загружать информацию из кеша для объекта ObjName. Здесь вы можете разрешить или запретить загрузку кеша объекта. Подробнее читайте в разделе Кэширование метаданных.
onerrorRestoreConnect
procedure (Database: TFIBDatabase; E: EFIBError; var Actions: TonLostConnectActions);
Событие возникает при ошибке очередной попытки восстановления подключения к БД. При этом вы можете проанализировать полученную ошибку и задать действие, которое следует выполнить в этой ситуации. Подробнее читайте в разделе Обработка потери соединения.
TOnLostConnectActions =(laTerminateApp, laCloseConnect, laIgnore, laWaitRestore);
Действие может принимать одно из следующих значений
laTerminateApp закрыть приложение;
laCloseConnect закрыть соединение;
laIgnore игнорировать;
laWaitRestore продолжить ожидание восстановления соединения.
OnLostConnect
procedure (Database: TFIBDatabase; E: EFIBError; var Actions: TonLostConnectActions);
Событие возникает в момент потери соединения. Подробное описание работы события
смотрите в разделе "Обработка потери соединения" и в демонстрационном примере
FIBPlusExamplessrcConnectionLostOnTimeout
procedure (Sender: Tobject);
Событие возникает в момент превышения времени таймаута соединения или транзакции.
Public свойства
DBParamByDPB[const Idx: Integer]: string;
Свойство позволяет получить строковое значение параметра подключения по индексу
FIBBaseCount: Integer;
Свойство позволяет задать количество объектов сервера БД, TpFIBTransaction, TpFIBDataSet, TpFIBQuery.
FIBBases[Index: Integer]: TFIBBase;
Свойство позволяет получить объект БД по индексу
Handle: TISC_DB_HANDLE;
Дескриптор подключения к базе данных
HandleIsShared: Boolean;
Свойство возвращает True, если текущее подключение В«разделяемоеВ». Т.е., если соединение в TpFIBDatabae получилось путем присвоения свойству Handle значения из другого, уже суВ¬ществующего Handle. Актуально при использовании внутри dll.
TransactionCount: Integer;
Свойство позволяет получить количество транзакций
FirstActiveTransaction: TFIBTransaction;
Указатель на первую активную транзакцию
ActiveTransactionCount: Integer;
Свойство позволяет получить количество активных транзакций
Transactions[Index: Integer]: TFIBTransaction;
Свойство позволяет получить транзакцию по ее индексу
AttachmentID: Long;
Уникальный идентификатор подключения к БД. В Firebird начиная с версии 1.5 его можно
так же получить из контекстной серверной переменной CURRENT_CONNECTION.
property Busy:boolean;
Возвращает true, если в рамках данного соединения в данный момент выполняется вызов IB
API . Имеет смысл анализировать только из параллельного треда.
Allocation: Long;
Информация от вызова IB API функции isc_database_info с параметром isc_info_allocation.
Подробности смотрите в документации к серверу (APIGuide.pdf)
BaseLevel: Long;
Информация от вызова IB API функции isc_database_info с параметром isc_info_base_level.
Подробности смотрите в документации к серверу (APIGuide.pdf)
DBFileName: string;
Свойство позволяет получить имя файла БД
DBSiteName: string;
Свойство позволяет получить имя хоста (сервера), на котором работает БД.
IsRemoteConnect: boolean;
Свойство возвращает True, если соединение удаленное
DBImplementationNo: Long;
Информация от вызова IB API функции isc_database_info с параметром
isc_info_implementation. Подробности смотрите в документации к серверу (APIGuide.pdf)
DBImplementationClass: Long;
Информация от вызова IB API функции isc_database_info с параметром isc_info_implementation. Подробности смотрите в документации к серверу (APIGuide.pdf)
NoReserve: Long;
Информация от вызова IB API функции isc_database_info с параметром isc_info_no_reserve.
Подробности смотрите в документации к серверу (APIGuide.pdf)
ODSMinorVersion: Long;
Свойство позволяет получить младшую цифру версии ODS
ODSMajorVersion: Long;
Свойство позволяет получить старшую цифру версии ODS
PageSize: Long;
Свойство позволяет получить размер страницы БД
Version: string;
Свойство позволяет получить строковое сообщение о версии сервера.
FBVersion: string;
Свойство позволяет получить строковое сообщение о версии сервера. Актуально только для
клонов Firebird. Если строка пустая, то версия сервера InterBase, иначе - Firebird.
ServerMajorVersion: integer;
Свойство позволяет получить старшую цифру версии сервера
ServerMinorVersion: integer;
Свойство позволяет получить младшую цифру версии сервера
ServerBuild: integer;
Свойство позволяет получить номер сборки сервера
ServerRelease: integer;
Свойство позволяет получить номер релиза сервера
CurrentMemory: Long;
Cвойство возвращает True, если текущая память занята сервером.
ForcedWrites: Long;
Свойство позволяет получить значение ForcedWrites для подключенной БД
MaxMemory: Long;
Свойство позволяет получить максимальный размер памяти, который занимал сервер для работы с данной БД.
SweepInterval: Long;
Свойство позволяет получить количество транзакций, после которого стартует автоматическая сборка мусора.
UserNames: TstringList;
Свойство позволяет получить список подключенных пользователей, для Firebird 1.5 - только для SuperServer.
TpFIBDatabase предоставляет доступ к функциям IB API. Подробное описание этих параметров можно найти в документации сервера (APIGuide.pdf, OpGuide.pdf)
Префикс WAL относится к сервeрам под NewWare.
DBSQLDialect: Word;
Это свойство позволяет получить диалект БД
ReadOnly: Long;
Это свойство возвращает True, если БД только для чтения
DatabaseName: string;
Это свойство позволяет получить имя БД
DifferenceTime: double;
Это свойство позволяет получить дельту времени на серверной машине и на машине
клиента.
ServerActiveTransactions: TstringList;
Это свойство позволяет получить список активных транзакций на сервере
OldestTransactionID: Long;
Это свойство позволяет получить ID старейшей транзакции. Подробности читайте в
документации по серверу.
OldestActiveTransactionID: Long;
Это свойство позволяет получить ID старейшей заинтересованной транзакции. Подробности
читайте в документации по серверу
ClientLibrary: IibClientLibrary;
Это свойство позволяет получить интерфейсную ссылку на клиентскую библиотеку
SQLStatisticsMaker: ISQLStatMaker;
Это свойство позволяет получить интерфейсную ссылку на счетчик статистики
Методы
procedure RegisterBlobFilter(BlobSubType:integer; EncodeProc, DecodeProc: PIBBlobFilterProc);
Этот метод позволяет регистрировать Blob-Filter для подтипа BlobSubType
procedure RemoveBlobFilter(BlobSubType:integer);
Этот метод позволяет удалить Blob-Filter для подтипа BlobSubType
procedure CheckActive;
Этот метод позволяет проверить, подключена ли БД. В том случае, если БД не подключена, метод генерирует исключение.
procedure CheckInactive;
Этот метод противоположен предыдущему методу CheckActive. Он позволяет проверить, не подключена ли БД. В том случае, если БД подключена, метод генерирует исключение.
procedure CheckDatabaseName;
Этот метод проверяет, заполнено ли имя базы данных. Если имя БД не заполнено, он генерирует исключение.
procedure Close;
Этот метод позволяет закрыть соединение.
procedure CreateDatabase;
Этот метод позволяет создать БД. Базовые параметры подключения должны быть заполнены.
procedure DropDatabase;
Этот метод позволяет физически удалить БД.
function FindTransaction(TR: TFIBTransaction): Integer;
Этот метод возвращает индекс транзакции в локальном списке транзакций.
procedure ForceClose;
Этот метод позволяет принудительно закрыть БД.
function IndexOfDBConst(const st: string): Integer;
Этот метод возвращает индекс константы БД
procedure Open; virtual; Этот метод позволяет открыть БД
function TestConnected: Boolean;
Этот метод позволяет тестировать подключение к БД. Он возвращает True в случае удачной
попытки подключения.
function GetServerTime:TDateTime;
Этот метод возвращает серверное время.
function ClientVersion: string;
Этот метод возвращает версию клиентской библиотеки (WI-V6.3.2.4731 Firebird 1.5) .
function ClientMajorVersion:integer;
Этот метод возвращает старшую цифру версии клиенткой библиотеки.
function ClientMinorVersion: Integer;
Этот метод возвращает младшую цифру версии клиенткой библиотеки.
function IsFirebirdConnect: Boolean;
Этот метод возвращает значение True, если есть соединение с сервером Firebird.
function IsIB2007Connect: Boolean;
Этот метод возвращает значение True, если есть соединение с сервером Interbase2007.
function NeedUnicodeFieldsTranslation: Boolean;
Это внутренний флаг. Для клиентской библиотеки метод возвращает информацию о том, нужна ли UTF перекодировка для полей UNICODE_FSS. Данная информация нужна не всегда, это зависит от CHAR_SET подключения.
function IsUnicodeConnect :boolean;
Этот метод возвращает True, если это чарсет соединения UNICODE_FSS или UTF8.
function GetContextVariable(ContextSpace:TFBContextSpace;const VarName:string ; aTransaction: TFIBTransaction=nil): Variant; TFBContextSpace = (csSystem, csSession, csTransaction);
Этот метод возвращает значение контекстной переменной. Только для Firebird версии 2.0.
procedure SetContextVariable( ContextSpace:TFBContextSpace;const VarName,VarValue:string;aTransaction:TFIBTransaction = nil);
Этот метод позволяет установить значение контекстной переменной. Только для Firebird версии 2.0.
procedure StartTransaction;
Этот метод позволяет стартовать транзакцию, которая прописана в свойстве DefaultTransaction.
procedure Commit;
Этот метод позволяет завершить по Commit транзакцию, которая прописана в свойстве DefaultTransaction.
procedure Rollback;
Этот метод позволяет завершить по Rollback транзакцию, которая прописана в свойстве DefaultTransaction.
procedure CommitRetaining;
Этот метод позволяет завершить по CommitRetaining транзакцию, которая прописана в свойстве DefaultTransaction.
procedure RollbackRetaining;
Этот метод позволяет завершить по RollbackRetaining транзакцию, которая прописана в свойстве DefaultTransaction.
function Gen_Id(const GeneratorName: string; Step: Int64; aTransaction: TFIBTransaction = nil): Int64;
Этот метод позволяет получить значение генератора с именем, шагом и в определенной транзакции. Если транзакция не задана, то она будет создана автоматически.
function Execute(const SQL: string): boolean;
Этот метод позволяет выполнить sql-запрос и возвращает True в случае удачного выполнения запроса.
procedure CreateGUIDDomain;
Этот метод позволяет создать домен FIBGUID char(16) character set octets в БД.
function QueryValue(const aSQL: string; FieldNo: integer; aTransaction: TFIBTransaction=nil): Variant; overload;
Этот метод позволяет получить значение поля c номером FieldNo запроса c текстом aSQL.
Если транзакция не задана, то она будет создана автоматически.
function QueryValue(const aSQL: string;FieldNo:integer; ParamValues:array of variant;aTransaction:TFIBTransaction=nil ):Variant; overload;
Эта функция аналогична функции, описанной выше, но дает возможность передавать
параметры.
function QueryValues(const aSQL: string;aTransaction:TFIBTransaction=nil):Variant; overload;
Эта функция аналогична функции, описанной выше, но позволяет получить запись целиком
в вариантный массив.
function QueryValues(const aSQL: string; ParamValues:array of variant; aTransaction: TFIBTransaction=nil ): Variant; overload;
Эта функция аналогична функции, описанной выше, но позволяет получить запись целиком
в вариантный массив и, кроме того, передавать параметры.
function QueryValueAsStr(const aSQL: string;FieldNo:integer):string; overload;
Эта функция возвращает строковое представление поля.
function QueryValueAsStr(const aSQL: string;FieldNo:integer; ParamValues:array of variant):string; overload;
Эта группа перегруженных методов QueryValueAsStr позволяет получить результатом строковое представление выполнения SQL-запроса первой строки, которую он выполняет.
Внимание: Семь методов, описанные выше, должны возвращать только одну запись!
function EasyFormatsStr: Boolean;
Этот метод позволяет выяснить, нужно ли обрамлять кавычками имена таблиц и полей или
нужно приводить их к верхнему регистру. (Это метод для внутреннего использования)
procedure CancelOperationFB21(ConnectForCancel:TFIBDatabase=nil);
Позволяет прекратить выполнение В«долгоиграющихВ» запросов. Если сам запрос выполняется в параллельном треде, то метод должен быть вызван из главного. Если же прерываемый запрос выполняется в главном, то метод вызывается из параллельного. Метод использует системную таблицу В«MON$STATEMENTSВ» и выполняется в параллельном соединении, которое ему передается в качестве входного параметра. Если входного параметра нет, то дополнительное соединение будет автоматически создано и закрыто после выполнения метода. Работает для всех версий Firebird, начиная с версии 2.1.
procedure RaiseCancelOperations;
procedure EnableCancelOperations;
procedure DisableCancelOperations;
Позволяет прекратить выполнение В«долгоиграющихВ» запросов другим способом. Использует возможность на уровне API сервера, которая введена начиная с версии Firebird 2.5. Подробнее смотрите в документации к серверу файл В«README.fb_cancel_operation.txtВ». В FIBPlus эта возможность реализуется набором методов TFIBDatabase
procedure .ClearQueryCacheList;
Уничтожает все запросы из списка закэшированных. См тему В«Повторное использование запросовВ» из руководства пользователя.
function UnicodeCharSets:TIBCharSets;
Возвращает множество идентификаторов чарсетов которые представляют уникодные данные. (В разных серверах это множество разное, поэтому метод отрабатывает корректно только после соединения с БД.)
function BytesInUnicodeChar(CharSetId:integer):Byte;
Возвращает размер указанного уникодного чарсета в байтах.
Свойства
AliasName
Группа опций, которая позволяет задать псевдоним базы данных. Псевдоним хранится в реестре Windows и содержит информацию, необходимую для подключения к БД.
AutoReconnect
property AutoReconnect: Boolean default False;
Свойство, которое позволяет автоматически соединяться с БД в случае если соединение закрыто, а приложение пытается выполнить обратиться к БД. В сочетании со свойством Timeout позволяет создать В«полуоффлайнВ» приложение. Приложение, которое будет автоматически открывать соединение на время выполнения запросов и закрывать его после выполнения.
BlobSwapSupport
Группа опций, которая позволяет задать режим кэширования BLOB-полей на клиенте.
TBlobSwapSupport = class(TPersistent)
property Active: Boolean default False;
property SwapDir: string;
property MinBlobSizeToSwap: Integer default 0; end;
Подробное описание использования этой опции приведено в разделе Кэширование блоб-полей на клиенте
CacheShemaOptions
Группа опций, которая позволяет задать режим кэширования информации, получаемой из базы данных и от сервера InterBase, которая появляется при работе приложения: подготовленные запросы, служебная информацию FIBPlus о значениях по умолчанию для полей, и многое другое.
TCacheSchemaOptions =class(TPersistent)
property LocalCacheFile: string;
property AutoSaveToFile: Boolean .. default False;
property AutoLoadFromFile: Boolean .. default False;
property ValidateAfterLoad: Boolean .. default True; end;
FIBPlus позволяет использовать эту информацию многократно, а также не терять ее между сеансами.
Свойство LocalCacheFile позволяет задать имя файла, в котором будет сохраняться эта информация. AutoSaveToFile отвечает за автоматическую запись кеша в файл при закрытии приложения. AutoLoadFromFile отвечает за загрузку кеша из файла. И, наконец, ValidateAfterLoad указывает, стоит ли проверять сохраненный кеш после загрузки.
Connected
Группа опций, которая позволяет управлять состоянием соединения с базой данных.
ConnectParams
Группа опций, которая позволяет задать основные параметры подключения.
TConnectParams=class(TPersistent)
property UserName: string; property RoleName: string; property Password: string; property CharSet : string; end;
DBName
Группа опций, которая позволяет задать строку для подключения. Строка подключения может включать имя сервера, протокол и базу данных. Так, например, для локального подключения пишется только имя файла:
D:IB7BookProgramBaseBpexampl.ib
• Для соединения с удаленным сервером по протоколу TCP/IP нужно дописать имя сервера: netserver:D:IB7BookProgramBaseBpexampl.ib
• Для соединения с удаленным сервером по протоколу TCP/IP и порту 3051 нужно
дописать порт netserver/3051:D:IB7BookProgramBaseBpexampl.ib
• Для протокола NetBEUI netserverD:IB7BookProgramBaseBpexampl.
• Для IPX/SPX (NetWare servers) netserver@vol1:IB7BookProgramBaseBpexampl.
• для UNIX или Linux сервера netserver:/user/IB7Book/Program/Base/Bpexampl.
DBParams
Группа опций, которая позволяет задать параметры подключения. Частично пересекается с опциями ConnectParams. Все возможные параметры можно добавлять напрямую сразу в буфер, например:
DBParams.Add('user_name=XUSER');
DBParams.Add('password=XUSER');
DBParams.Add('lc_ctype=WIN1251');
DBParams.Add('sql_role_name=XROLE');
Дополнительные параметры подключения можно посмотреть в документации к серверу (APIGuide.pdf, DevGuide.pdf).
DefaultTransaction
Группа опций, которая позволяет задать транзакцию по умолчанию. При присоединении компонентов TpFIBDataSet,
TpFIBQuery, TpFIBStoredProc к компоненту TpFIBDatabase свойство Transaction этого компонента будет автоматически скопировано в свойство Transaction нового компонента.
DefaultUpdateTransaction
Группа опций, которая позволяет задать транзакцию по умолчанию для обновления в компонентах TpFIBDataSet. Т.е. при заполнении свойства Database компонента TpFIBDataSet будет автоматически установлено свойство
UpdateTransaction.
DesignDBOptions
Группа опций, которая позволяет задать поведение компонента TpFIBDatabase в режиме проектирования.
TDesignDBOption = (ddoIsDefaultDatabase,ddoStoreConnected,ddoNotSavePassword); TDesignDBOptions = set of TDesignDBOption;
ddoIsDefaultDatabase определяет, будет ли данный компонент соединением по умолчанию для добавляемых компонентов TpFIBDataSet, TpFIBQuery, TpFIBStoredProc. Если опция включена, то при добавлении новых компонентов в проект им будет автоматически присваиваться свойство Database и, как следствие, Transaction и UpdateTransaction.
ddoStoreConnected определяет, будет ли сохраняться состояние подключения при
компиляции приложения.
ddoNotSavePassword определяет, будет ли сохраняться пароль для подключения в
свойствах компонента. Если опция включена, то пароль сохранен не будет.
LibraryName
Группа опций, которая позволяет задать имя клиентской библиотеки InterBase/Firebird. Данная опция может быть изменена только в зарегистрированной версии FIBPlus.
SaveAliasParamsAfterConnect
Если включена эта опция, то при удачном соединении с базой данных информация будет записана в реестр Windows как клиентский псевдоним (псевдоним задается в свойстве AliasName)
SQLDialect
Эта опция позволяет задать диалект коннекта к базе данных
SQLLogger
Эта опция позволяет задать компонент для логгирования обращений к БД. Подробнее смотрите в описании компонента TSQLLogger.
SynchronizeTime
Если включена эта опции, то при успешном подключении к БД время рабочей станции будет синхронизировано с временем на сервере.
TimeOut
Если значение свойства Timeout отлично от нуля, то оно определяет время допустимого простоя в миллисекундах. Если за указанный промежуток времени через коннект не прошло ни одного действия (запроса, фетча данных, фетча блоба), то автоматически будет вызвано событие OnIdleConnect. Если на это событие нет обработчика, то коннект будет автоматически закрыт.
UpperOldNames
Если установлена эта опция, все имена в SQL-запросах будут переводиться в верхний регистр. Это позволяет избежать ошибок с именами объектов при написании запросов.
UseLoginPrompt
Если установлена эта опция, то, несмотря на пароль, прописанный в информации для подключения, будет вызваться диалог подключения.
UseRepositories
Эта опция позволяет задать режим использования репозиториев:
TFIBUseRepository = (urFieldsInfo,urDataSetInfo,urErrorMessagesInfo); TFIBUseRepositories = set of TFIBUseRepository;
urFieldsInfo использовать репозиторий информации о полях
urDataSetInfo использовать репозиторий информации о датасетах
urErrorMessagesInfo использовать репозиторий информации об ошибках
Подробно работа с репозиториями описывается в разделе В«Работа с репозиториямиВ». Также Вы можете посмотреть примеры из комплекта FIBPlusExamples:
FIBPlusExamplessrcDataSetRepository
FIBPlusExamplessrcErrorMessagesRepository
FIBPlusExamplessrcFieldsRepository
WaitForRestoreConnect
Эта опция позволяет задать интервал времени в миллисекундах, по истечении которого будет производиться очередная попытка восстановить соединение. Подробнее об обработке потери соединения Вы можете прочитать в разделе Обработка потери соединения
UseBlrToTextFilter
Включает и выключает обработку блоб полей с подтипами Blr (2), Acl(3). Дело в том что блоб поля с подтипом 2 и более используется сервером для внутренних целей. Например в блобах с подтипом 2 хранятся скомпилированные в blr код триггера и процедуры. Если включить опцию UseBlrToTextFilter, то для таких полей будет применен соответствующий фильтр.
Описание событий
AfterConnect
procedure (Sender: Tobject);
Событие возникает после соединения с базой данных посредством использования метода
Open или установки в истину свойства Connected.
AfterDisconnect
procedure (Sender: Tobject);
Событие генерируется после отсоединения от БД методом Close или установкой в False
свойства Connected.
AfterEndTransaction
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);
Событие возникает после завершения транзакции, при этом передаются завершившаяся транзакция и действие, которым она завершилась.
TTransactionAction =(TARollback, TARollbackRetaining,TACommit, TACommitRetaining)
AfterLoadBlobFromSwap
procedure (const TableName, FieldName: String; RecordKeyValues: array of Variant; const FileName: String);
Событие возникает после загрузки BLOB-поля c диска.
AfterRestoreConnect
procedure (Database: TFIBDatabase);
Событие возникает после того, как соединение было успешно восстановлено после разрыва. Подробное описание работы смотрите в разделе "Обработка потери соединения" и в демонстрационном примере:
FIBPlusExamplessrcConnectionLost
AfterSaveBlobToSwap
procedure (const TableName, FieldName: String; RecordKeyValues: array of Variant; const FileName: String);
Событие возникает после сохранения BLOB-поля на диск
AfterStartTransaction
procedure (Sender: Tobject);
Cобытие возникает после старта транзакции.
BeforeConnect
procedure (Database: TFIBDatabase; LoginParams: TStrings; var DoConnect: Boolean);
Событие возникает непосредственно перед попыткой соединения с БД.
BeforeDisconnect
procedure (Sender: Tobject);
Событие возникает перед отсоединением от БД.
BeforeEndTransaction
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);
Событие возникает перед завершением транзакции.
BeforeLoadBlobFromSwap
procedure (EndingTR: TFIBTransaction; Action: TTransactionAction; Force: Boolean);
Событие возникает перед загрузкой BLOB-поля из кеша. Подробнее смотрите раздел Кеширование блоб-полей на клиенте
BeforeSaveBlobToSwap
procedure (const TableName, FieldName: String; RecordKeyValues: array of Variant; Stream: TStream; var FileName: String; var CanSave: Boolean);
Событие возникает перед сохранением BLOB-поля на диск.
BeforeStartTransaction
procedure (Sender: Tobject);
Событие возникает перед стартом транзакции.
OnAcceptCacheSchema
procedure (const ObjName: String; var Accept: Boolean);
Событие возникает в момент принятиия решения о том, стоит ли загружать информацию из кеша для объекта ObjName. Здесь вы можете разрешить или запретить загрузку кеша объекта. Подробнее читайте в разделе Кэширование метаданных.
onerrorRestoreConnect
procedure (Database: TFIBDatabase; E: EFIBError; var Actions: TonLostConnectActions);
Событие возникает при ошибке очередной попытки восстановления подключения к БД. При этом вы можете проанализировать полученную ошибку и задать действие, которое следует выполнить в этой ситуации. Подробнее читайте в разделе Обработка потери соединения.
TOnLostConnectActions =(laTerminateApp, laCloseConnect, laIgnore, laWaitRestore);
Действие может принимать одно из следующих значений
laTerminateApp закрыть приложение;
laCloseConnect закрыть соединение;
laIgnore игнорировать;
laWaitRestore продолжить ожидание восстановления соединения.
OnLostConnect
procedure (Database: TFIBDatabase; E: EFIBError; var Actions: TonLostConnectActions);
Событие возникает в момент потери соединения. Подробное описание работы события
смотрите в разделе "Обработка потери соединения" и в демонстрационном примере
FIBPlusExamplessrcConnectionLostOnTimeout
procedure (Sender: Tobject);
Событие возникает в момент превышения времени таймаута соединения или транзакции.
Public свойства
DBParamByDPB[const Idx: Integer]: string;
Свойство позволяет получить строковое значение параметра подключения по индексу
FIBBaseCount: Integer;
Свойство позволяет задать количество объектов сервера БД, TpFIBTransaction, TpFIBDataSet, TpFIBQuery.
FIBBases[Index: Integer]: TFIBBase;
Свойство позволяет получить объект БД по индексу
Handle: TISC_DB_HANDLE;
Дескриптор подключения к базе данных
HandleIsShared: Boolean;
Свойство возвращает True, если текущее подключение В«разделяемоеВ». Т.е., если соединение в TpFIBDatabae получилось путем присвоения свойству Handle значения из другого, уже суВ¬ществующего Handle. Актуально при использовании внутри dll.
TransactionCount: Integer;
Свойство позволяет получить количество транзакций
FirstActiveTransaction: TFIBTransaction;
Указатель на первую активную транзакцию
ActiveTransactionCount: Integer;
Свойство позволяет получить количество активных транзакций
Transactions[Index: Integer]: TFIBTransaction;
Свойство позволяет получить транзакцию по ее индексу
AttachmentID: Long;
Уникальный идентификатор подключения к БД. В Firebird начиная с версии 1.5 его можно
так же получить из контекстной серверной переменной CURRENT_CONNECTION.
property Busy:boolean;
Возвращает true, если в рамках данного соединения в данный момент выполняется вызов IB
API . Имеет смысл анализировать только из параллельного треда.
Allocation: Long;
Информация от вызова IB API функции isc_database_info с параметром isc_info_allocation.
Подробности смотрите в документации к серверу (APIGuide.pdf)
BaseLevel: Long;
Информация от вызова IB API функции isc_database_info с параметром isc_info_base_level.
Подробности смотрите в документации к серверу (APIGuide.pdf)
DBFileName: string;
Свойство позволяет получить имя файла БД
DBSiteName: string;
Свойство позволяет получить имя хоста (сервера), на котором работает БД.
IsRemoteConnect: boolean;
Свойство возвращает True, если соединение удаленное
DBImplementationNo: Long;
Информация от вызова IB API функции isc_database_info с параметром
isc_info_implementation. Подробности смотрите в документации к серверу (APIGuide.pdf)
DBImplementationClass: Long;
Информация от вызова IB API функции isc_database_info с параметром isc_info_implementation. Подробности смотрите в документации к серверу (APIGuide.pdf)
NoReserve: Long;
Информация от вызова IB API функции isc_database_info с параметром isc_info_no_reserve.
Подробности смотрите в документации к серверу (APIGuide.pdf)
ODSMinorVersion: Long;
Свойство позволяет получить младшую цифру версии ODS
ODSMajorVersion: Long;
Свойство позволяет получить старшую цифру версии ODS
PageSize: Long;
Свойство позволяет получить размер страницы БД
Version: string;
Свойство позволяет получить строковое сообщение о версии сервера.
FBVersion: string;
Свойство позволяет получить строковое сообщение о версии сервера. Актуально только для
клонов Firebird. Если строка пустая, то версия сервера InterBase, иначе - Firebird.
ServerMajorVersion: integer;
Свойство позволяет получить старшую цифру версии сервера
ServerMinorVersion: integer;
Свойство позволяет получить младшую цифру версии сервера
ServerBuild: integer;
Свойство позволяет получить номер сборки сервера
ServerRelease: integer;
Свойство позволяет получить номер релиза сервера
CurrentMemory: Long;
Cвойство возвращает True, если текущая память занята сервером.
ForcedWrites: Long;
Свойство позволяет получить значение ForcedWrites для подключенной БД
MaxMemory: Long;
Свойство позволяет получить максимальный размер памяти, который занимал сервер для работы с данной БД.
SweepInterval: Long;
Свойство позволяет получить количество транзакций, после которого стартует автоматическая сборка мусора.
UserNames: TstringList;
Свойство позволяет получить список подключенных пользователей, для Firebird 1.5 - только для SuperServer.
TpFIBDatabase предоставляет доступ к функциям IB API. Подробное описание этих параметров можно найти в документации сервера (APIGuide.pdf, OpGuide.pdf)
NumBuffers: Long; Fetches: Long; Marks: Long; Reads: Long;
Writes: Long; BackoutCount: TstringList;
DeleteCount: TstringList; ExpungeCount: TstringList; InsertCount: TstringList; PurgeCount: TstringList; ReadIdxCount[/b][/color]: TstringList; ReadSeqCount: TstringList; UpdateCount: TstringList;
IndexedReadCount[const TableName:string]: integer; NonIndexedReadCount[const TableName:string]: integer; InsertsCount[const TableName:string]: integer;
UpdatesCount[const TableName:string]: integer; DeletesCount[const TableName:string]: integer;
AllModifications: integer;
LogFile: Long;
CurLogFileName: string; CurLogPartitionOffset: Long;
Префикс WAL относится к сервeрам под NewWare.
NumWALBuffers: Long; WALBufferSize: Long; WALCheckpointLength: Long; WALCurCheckpointInterval: Long; WALPrvCheckpointFilename: string; WALPrvCheckpointPartOffset: Long; WALGroupCommitWaitUSecs: Long; WALNumIO: Long; WALAverageIOSize: Long; WALNumCommits: Long; WALAverageGroupCommitSize: Long;
DBSQLDialect: Word;
Это свойство позволяет получить диалект БД
ReadOnly: Long;
Это свойство возвращает True, если БД только для чтения
DatabaseName: string;
Это свойство позволяет получить имя БД
DifferenceTime: double;
Это свойство позволяет получить дельту времени на серверной машине и на машине
клиента.
ServerActiveTransactions: TstringList;
Это свойство позволяет получить список активных транзакций на сервере
OldestTransactionID: Long;
Это свойство позволяет получить ID старейшей транзакции. Подробности читайте в
документации по серверу.
OldestActiveTransactionID: Long;
Это свойство позволяет получить ID старейшей заинтересованной транзакции. Подробности
читайте в документации по серверу
ClientLibrary: IibClientLibrary;
Это свойство позволяет получить интерфейсную ссылку на клиентскую библиотеку
SQLStatisticsMaker: ISQLStatMaker;
Это свойство позволяет получить интерфейсную ссылку на счетчик статистики
Методы
procedure RegisterBlobFilter(BlobSubType:integer; EncodeProc, DecodeProc: PIBBlobFilterProc);
Этот метод позволяет регистрировать Blob-Filter для подтипа BlobSubType
procedure RemoveBlobFilter(BlobSubType:integer);
Этот метод позволяет удалить Blob-Filter для подтипа BlobSubType
procedure CheckActive;
Этот метод позволяет проверить, подключена ли БД. В том случае, если БД не подключена, метод генерирует исключение.
procedure CheckInactive;
Этот метод противоположен предыдущему методу CheckActive. Он позволяет проверить, не подключена ли БД. В том случае, если БД подключена, метод генерирует исключение.
procedure CheckDatabaseName;
Этот метод проверяет, заполнено ли имя базы данных. Если имя БД не заполнено, он генерирует исключение.
procedure Close;
Этот метод позволяет закрыть соединение.
procedure CreateDatabase;
Этот метод позволяет создать БД. Базовые параметры подключения должны быть заполнены.
procedure DropDatabase;
Этот метод позволяет физически удалить БД.
function FindTransaction(TR: TFIBTransaction): Integer;
Этот метод возвращает индекс транзакции в локальном списке транзакций.
procedure ForceClose;
Этот метод позволяет принудительно закрыть БД.
function IndexOfDBConst(const st: string): Integer;
Этот метод возвращает индекс константы БД
procedure Open; virtual; Этот метод позволяет открыть БД
function TestConnected: Boolean;
Этот метод позволяет тестировать подключение к БД. Он возвращает True в случае удачной
попытки подключения.
function GetServerTime:TDateTime;
Этот метод возвращает серверное время.
function ClientVersion: string;
Этот метод возвращает версию клиентской библиотеки (WI-V6.3.2.4731 Firebird 1.5) .
function ClientMajorVersion:integer;
Этот метод возвращает старшую цифру версии клиенткой библиотеки.
function ClientMinorVersion: Integer;
Этот метод возвращает младшую цифру версии клиенткой библиотеки.
function IsFirebirdConnect: Boolean;
Этот метод возвращает значение True, если есть соединение с сервером Firebird.
function IsIB2007Connect: Boolean;
Этот метод возвращает значение True, если есть соединение с сервером Interbase2007.
function NeedUnicodeFieldsTranslation: Boolean;
Это внутренний флаг. Для клиентской библиотеки метод возвращает информацию о том, нужна ли UTF перекодировка для полей UNICODE_FSS. Данная информация нужна не всегда, это зависит от CHAR_SET подключения.
function IsUnicodeConnect :boolean;
Этот метод возвращает True, если это чарсет соединения UNICODE_FSS или UTF8.
function GetContextVariable(ContextSpace:TFBContextSpace;const VarName:string ; aTransaction: TFIBTransaction=nil): Variant; TFBContextSpace = (csSystem, csSession, csTransaction);
Этот метод возвращает значение контекстной переменной. Только для Firebird версии 2.0.
procedure SetContextVariable( ContextSpace:TFBContextSpace;const VarName,VarValue:string;aTransaction:TFIBTransaction = nil);
Этот метод позволяет установить значение контекстной переменной. Только для Firebird версии 2.0.
procedure StartTransaction;
Этот метод позволяет стартовать транзакцию, которая прописана в свойстве DefaultTransaction.
procedure Commit;
Этот метод позволяет завершить по Commit транзакцию, которая прописана в свойстве DefaultTransaction.
procedure Rollback;
Этот метод позволяет завершить по Rollback транзакцию, которая прописана в свойстве DefaultTransaction.
procedure CommitRetaining;
Этот метод позволяет завершить по CommitRetaining транзакцию, которая прописана в свойстве DefaultTransaction.
procedure RollbackRetaining;
Этот метод позволяет завершить по RollbackRetaining транзакцию, которая прописана в свойстве DefaultTransaction.
function Gen_Id(const GeneratorName: string; Step: Int64; aTransaction: TFIBTransaction = nil): Int64;
Этот метод позволяет получить значение генератора с именем, шагом и в определенной транзакции. Если транзакция не задана, то она будет создана автоматически.
function Execute(const SQL: string): boolean;
Этот метод позволяет выполнить sql-запрос и возвращает True в случае удачного выполнения запроса.
procedure CreateGUIDDomain;
Этот метод позволяет создать домен FIBGUID char(16) character set octets в БД.
function QueryValue(const aSQL: string; FieldNo: integer; aTransaction: TFIBTransaction=nil): Variant; overload;
Этот метод позволяет получить значение поля c номером FieldNo запроса c текстом aSQL.
Если транзакция не задана, то она будет создана автоматически.
function QueryValue(const aSQL: string;FieldNo:integer; ParamValues:array of variant;aTransaction:TFIBTransaction=nil ):Variant; overload;
Эта функция аналогична функции, описанной выше, но дает возможность передавать
параметры.
function QueryValues(const aSQL: string;aTransaction:TFIBTransaction=nil):Variant; overload;
Эта функция аналогична функции, описанной выше, но позволяет получить запись целиком
в вариантный массив.
function QueryValues(const aSQL: string; ParamValues:array of variant; aTransaction: TFIBTransaction=nil ): Variant; overload;
Эта функция аналогична функции, описанной выше, но позволяет получить запись целиком
в вариантный массив и, кроме того, передавать параметры.
function QueryValueAsStr(const aSQL: string;FieldNo:integer):string; overload;
Эта функция возвращает строковое представление поля.
function QueryValueAsStr(const aSQL: string;FieldNo:integer; ParamValues:array of variant):string; overload;
Эта группа перегруженных методов QueryValueAsStr позволяет получить результатом строковое представление выполнения SQL-запроса первой строки, которую он выполняет.
Внимание: Семь методов, описанные выше, должны возвращать только одну запись!
function EasyFormatsStr: Boolean;
Этот метод позволяет выяснить, нужно ли обрамлять кавычками имена таблиц и полей или
нужно приводить их к верхнему регистру. (Это метод для внутреннего использования)
procedure CancelOperationFB21(ConnectForCancel:TFIBDatabase=nil);
Позволяет прекратить выполнение В«долгоиграющихВ» запросов. Если сам запрос выполняется в параллельном треде, то метод должен быть вызван из главного. Если же прерываемый запрос выполняется в главном, то метод вызывается из параллельного. Метод использует системную таблицу В«MON$STATEMENTSВ» и выполняется в параллельном соединении, которое ему передается в качестве входного параметра. Если входного параметра нет, то дополнительное соединение будет автоматически создано и закрыто после выполнения метода. Работает для всех версий Firebird, начиная с версии 2.1.
procedure RaiseCancelOperations;
procedure EnableCancelOperations;
procedure DisableCancelOperations;
Позволяет прекратить выполнение В«долгоиграющихВ» запросов другим способом. Использует возможность на уровне API сервера, которая введена начиная с версии Firebird 2.5. Подробнее смотрите в документации к серверу файл В«README.fb_cancel_operation.txtВ». В FIBPlus эта возможность реализуется набором методов TFIBDatabase
procedure .ClearQueryCacheList;
Уничтожает все запросы из списка закэшированных. См тему В«Повторное использование запросовВ» из руководства пользователя.
function UnicodeCharSets:TIBCharSets;
Возвращает множество идентификаторов чарсетов которые представляют уникодные данные. (В разных серверах это множество разное, поэтому метод отрабатывает корректно только после соединения с БД.)
function BytesInUnicodeChar(CharSetId:integer):Byte;
Возвращает размер указанного уникодного чарсета в байтах.