Programming: Delphi


Иллюстрированный самоучитель по Delphi 7 для профессионалов



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




Назад | Оглавление | Вперёд




При перепечатке любого материала с сайта, видимая ссылка на источник www.warayg.narod.ru и все имена, ссылки авторов обязательны.

© 2005
 

Hosted by uCoz