type TDataBaseThread = class(TThread)
private
// Komponent do komunikacji z bazą danych
SQL : ^TUniQuery;
protected
// Procedura odpowiedzialna za wykonanie wątku
procedure Execute; override;
public
// Konstuktor - przekazanie parametrów
constructor Create(var SQLQuery : TUniQuery);
end;
implementation
//------------------------------------------------------------------------------
constructor TDataBaseThread.Create(var SQLQuery: TUniQuery );
begin
// Pobranie adresu komponentu znajdującego się na DataModule
self.SQL := @SQLQuery;
// Wywołanie konstruktora klasy nadrzędnej
inherited Create( false );
end;
//------------------------------------------------------------------------------
procedure TDataBaseThread.Execute;
begin
// Zakończ wątek po wykonaniu procedury
FreeOnTerminate := false;
// Wykonaj połączenie z bazą danych
self.SQL.Connection.Connect;
end;
//------------------------------------------------------------------------------
Jeżeli linia self.SQL.Connection.Connect; znajduje się w execute to kompilator nie wchodzi do procdury execute.
Jeżeli ją wyrzucę to kompilator wchodzi do procedury executy. Klasa ma służyć do inicjacji połączenia z bazą danych oraz wykonywania zapytań obarczonych długim czasem. Baza jest na serwerze zdalnym.
Proszę o pomoc.