Для компонента cdsCusts также предусмотрена простейшая обработка исключительных ситуаций, возникающих на сервере.
Обратите также внимание на настройку компонента cnMast типа TSQLConnection. Свойства KeepConnection И LoginPrompt со значениями False обеспечивают открытие наборов данных при создании формы и автоматическое закрытие соединения при закрытии приложения с минимальным исходным кодом.
Интерфейсы dbExpress
Технология dbExpress основана на использовании четырех базовых интерфейсов, методы которых применяются во всех компонентах dbExpress. При серьезной работе с технологией или при проектировании собственных компонентов информация об этих интерфейсах будет полезна.
Интерфейс/SQLDnVer
Интерфейс ISQLDriver инкапсулирует всего три метода для обслуживания драйвера dbExpress. Экземпляр интерфейса создается для соединения и обеспечивает его связь с драйвером.
Методы
function SetOption(eDOption: TSQLDriverOption;
EropValue: Longlnt): SQLResult;
stdcall;
function GetOption (eDOption: TS21iDriverCption;
EropValue: Pointer;
MaxLength: Smalllnt;
out Length: Smalllnt): SQLResult;
stdcall;
позволяют работать с параметрами драйвера. А метод
function getSQLConnection(out pConn: LSQLConnection) : SQLResult;
stdcall;
возвращает указатель на интерфейс связанного с драйвером соединения
LSQLConnection.
Получить доступ к интерфейсу ISQLDriver разработчик может, использовав защищенное свойство
property Driver: ISQLDriver read FSQLDriver;
компонента TSQLConnection.
Интерфейс ISQLConnection
Интерфейс ISQLConnection обеспечивает работу соединения. Он передает запросы серверу и возвращает результаты, создавая экземпляры интерфейса ISQLCommand; управляет транзакциями; поддерживает передачу метаданных При ШУОЩ интерфейса iSQLMetaData.
Для открытия соединения используется метод
unction connect (ServerName: Khar;
UserName: PChar;
Password: PChar) : SQLResult;
stdcall;
где ServerName - ИМЯ базы данных, UserName И Password - ИМЯ И пароль пользователя.
Закрывает соединение метод
function disconnect: SQLResult; stdcall; Параметры соединения управляются методами
function SetOption(eConnectOption: TSQLConnectionCption;
lvalue: Longlnt): SQLResult;
stdcall;
function GetOption (eDOption: TSQLConnectionCption;
PropValue: Pointer;
MaxLength: Smalllnt;
out Length: Smalllnt): SQLResult;
stdcall;
Для обработки запроса, проходящего через соединение, создается интерфейс ISQLCommand
function getSQLComrand(out pComm: ISQLComrand) : SQLResult;
stdcall;
Обработка транзакций осуществляется тремя методами:
function beginTransaction(TranID: LongWord) : SQLResult;
stdcall;
function commit (TranID: LongWord): SQLResult;
stdcall;
function rollback(TranID: LongWord): SQLResult;
stdcall;
При помощи метода
function getErrorMessage(Error: PChar): SQLResult;
overload;
stdcall;
организована обработка исключительных ситуаций в компоненте TSQLConnection. В нем реализована защищенная процедура sQLError, которую можно использовать в собственных компонентах и при необходимости дорабатывать.
Например, можно написать собственную процедуру контроля ошибок примерно по такому образцу: