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.

Previous page:
ISQLDriver
Top:
DRKB
Next page:
ISQLCommand