602SQL-Úplná dokumentace Index  

ESQL602Exception

Delphi / Kylix

Zjednodušená deklarace třídy:

type ESQL602Exception = class(Exception)
public
  property Error          : integer;
  property Message        : string;	
  property ErrorMessage   : string;
  property SupplName      : string;	
  property SQLStatement   : string;	
  property ErrorPos       : Integer;	
  property Component      : TObject;	
  property ComponentName  : string;	
  property ComponentClass : string; 
  property OwnerName      : string;	
  property OwnerClass     : string;	
  property Connection     : TSQL602Connection;	
  property DBXConnection  : TDBX602Connection;
  property ContextLevel   : integer;	
  property ContextType    : tcontype;	
  property ContextName    : string;	
  property TableNO        : ttablenum;	
  property TableName      : string;	
  property RecNO          : trecnum;	
  property ColumnNO       : tattrib;	
  property ColumnName     : string;
  property MultiIndex     : uns16;	
  property IndexNO        : integer;	
  property IndexName      : string;	
  property ProcNO         : tobjnum;	
  property ProcName       : string;	
  property TriggerNO      : tobjnum;
  property TriggerName    : string;	
  property LockType       : integer;	
  property LockText       : string;	
  property LUserNO        : tobjnum;	
  property LUserName      : string;	
  property ConText        : string
  property DuplKeyValue   : string;
  property InvalidRecord  : string;
  property InvalidStatement  : string;
  
protected
  procedure DoAfterCreate; virtual;
  
end;


Popis

Komponenta reprezentuje popis výjimky v důsledku chyby databázové operace. Všechny chyby, ke kterým dojde při komunikaci s 602SQL serverem, vyvolají výjimku třídy ESQL602Exception. Standardní ošetření výjimky zobrazí chybový dialog, ve kterém je uvedeno jméno API funkce, která chybu vyvolala, kód chyby, odpovídající textové hlášení a identifikace komponenty, na které k chybě došlo. Uživatelská procedura ošetřující výjimku, má k dispozici tyto informace jako vlastnosti Error, Message, ErrorMessage, ComponentName, ComponentClass, OwnerName a OwnerClass. Vlastnost ContextLevel umožňuje získat podrobnější informace o jednotlivých úrovních kontextu chyby. Pokud aplikace potřebuje mít v případě výjimky k dispozici další interní informace, může implementovat potomka třídy ESQL602Exception. Virtuální metoda DoAfterCreate, která se volá na konci konstruktoru, umožňuje aplikaci nastavit ve vytvářené instanci příslušné informace. Třídu potomka je třeba zaregistrovat pomocí procedury SetSQL602ExceptionClass.
procedure SetSQL602ExceptionClass(Value : TSQL602ExceptionClass);
type TSQL602ExceptionClass = class of ESQL602Exception;
Všechny vlastnosti jsou jen pro čtení.

Pro běžný provoz aplikací stačí používat vlastnosti Error, Message a ErrorMessage, ostatní se uplatní zvláště při vývoji.



Unit

SQL602Exception

Vlastnosti komponenty

Error : integer

Vlastnost obsahuje kód chyby. Seznam jednotlivých kódů a jejich význam je popsán v nápovědě k 602SQL. Vedle standardních chyb 602SQL může tato vlastnost vracet i chyby specifické pro použití CDK komponent.

Message : string;

Implicitní víceřádkové chybové hlášení včetně identifikace komponenty, na které k chybě došlo.

ErrorMessage : string;

Samostatné chybové hlášení odpovídající kódu Error bez identifikace komponenty, na které k chybě došlo

SupplName : string;

Doplňková informace k některým typům chyb, obvykle jméno objektu, který vyvolal chybu - podrobnosti. Je už obsažena v textu Message nebo ErrorMessage.

SQLStatement : string

SQL příkaz, který vyvolal výjimku. Pokud výjimka vznikla na komponentě třídy TSQL602DataSet, je hodnotou celý příkaz z vlastnosti CommandText, pokud výjimka vznikla na komponentě třídy TSQL602Statement, je hodnotou celý příkaz z vlastnosti Statement, pokud výjimka vznikla na komponentě třídy TSQL602StoredProc, je hodnotou část toho SQL příkazu z uložené procedury, který výjimku vyvolal.

ErrorPos : integer

Pokud byla výjimka vyvolána syntaktickou chybou v SQL příkazu, obsahuje pozici chyby v příkazu.

Component : TObject;

Komponenta, která vyvolala výjimku.

ComponentName : string;

ComponentClass : string;

Jméno a třída komponenty, na které k chybě došlo

OwnerName : string;

OwnerClass : string;

Jméno a třída vlastníka komponenty, na které k chybě došlo

Connection : TSQL602Connection

DBXConnection : TDBX602Connection

Aktuální spojení na SQL server, umožňuje proceduře ošetřující výjimku komunikovat s SQL serverem.

ContextLevel, ContextType, ComponentName, TableNO, TableName, RecNO, ColumnNO, MultiIndex, IndexNO, IndexName, ProcNO, ProcName, TriggerNO, TriggerName, LockType, LockText, LUserNO, LUserName, ConText, DuplKeyValue, InvalidRecord, InvalidStatement.

Podrobnější kontext chyby lze získat pomocí těchto vlastnosti - podrobnosti.



Metody komponenty

procedure DoAfterCreate; virtual;

Virtuální procedura se volá na konci konstruktoru třídy TSQL602Exception a umožňuje potomkovi inicializovat ve vytvářené instanci přidané vlastnosti.



Příklad

.
.
type EMYDBException = class(ESQL602Exception)
public
    MYInfo : string;
protected
    procedure DoAfterCreate; override;
end;
.
.
procedure EMYDBException.DoAfterCreate;
begin
    MYInfo := 'Chybami se člověk učí';
end;
.
.
procedure Form1.Loaded;
begin
    inherited;
    SetSQL602ExceptionClass(EMYDBException);
end;
.
.
procedure Form1.OnAction;
begin
    try
        SQL602Statement.Execute;
    except
        on E:EMYDBException do ShowMessage(E.MYInfo);
    end;
end;

Seznam subsekcí: