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