M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

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