ISQLConnection
Интерфейс ISQLConnection обеспечивает работу соединения. Он передает запросы серверу и возвращает результаты, создавая экземпляры интерфейса iSQLCommand; управляет транзакциями; поддерживает передачу метаданных при помощи интерфейса ISQLMetaData.
Для открытия соединения используется метод
function connect(ServerName: PChar; UserName: PChar; Password: PChar): SQLResult; stdcall;
где ServerName — имя базы данных, UserName И Password — имя и пароль пользователя.
Закрывает соединение метод
function disconnect: SQLResult; stdcall;
Параметры соединения управляются методами
function SetOption(eConnectOption: TSQLConnectionOption; lvalue: Longlnt): SQLResult; stdcall;
function GetOption(eDOption: TSQLConnectionOption; PropValue: Pointer; MaxLength: Smalllnt; out Length: Smalllnt): SQLResult; stdcall;
Для обработки запроса, проходящего через соединение, создается интерфейс ISQLCommand
function getSQLCommand(out pComm: ISQLCommand): 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, которую можно использовать в собственных компонентах и при необходимости дорабатывать.
Например, можно написать собственную процедуру контроля ошибок примерно по такому образцу:
procedure CheckError(IConn: ISQLConnection); var FStatus: SQLResult; FSize:SmallInt; FMessage: pChar; begin FStatus := IConn.getErrorMessageLen(FSize); if (FStatus = SQL_SUCCESS)and(FSize > 0) then begin FMessage := AllocMem(FSize + I); FStatus := IConn.getErrorMessage(FMessage); if FStatus = SQL_SUCCESS then MessageDlg (FMessage, mtError, [rnbOK] , 0) else MessageDlg('Checking error', mtWarning, [mbOK], 0) ; if Assigned(FMessage) then FreeMem(FMessage); end; end;
Доступ к интерфейсу isQLConnection можно получить через свойство
property SQLConnection: ISQLConnection;
компонента TSQLConnection.