Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

ISQLConnection

01.01.2007

Интерфейс 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.