unit UDatenbank;
interface
uses Sysutils, UIni, classes, ZConnection,
Db, ZAbstractRODataset, ZAbstractDataset, ZDataset;
type TFehlerEvent =
procedure(sFehlercode: integer)
of object;
type TDatenbank =
class(TComponent)
private
FMysql : TZConnection;
FAbfrage : TZQuery;
ini : TIni;
FOnFehler: TFehlerEvent;
procedure SetOnFehler(Value: TFehlerEvent);
procedure Fehler (sFehler : integer);
procedure iniOnFehler(sFehlercode: integer);
procedure verbinden;
procedure beenden;
public
constructor create;
destructor destroy;
procedure abfrage(sAbfrage :
String);
published
property onFehler: TFehlerEvent
read FOnFehler
write SetonFehler;
end;
implementation
{ TDatenbank }
constructor TDatenbank.create;
begin
try
FMysql := TZConnection.create(self);
FAbfrage := TZQuery.create(self);
FAbfrage.Connection := FMysql;
Ini := TIni.create(self);
Ini.onFehler := iniOnFehler;
except
Fehler(10000);
end;
end;
destructor TDatenbank.destroy;
begin
beenden;
FMysql.Free;
FAbfrage.free;
Ini.free;
end;
procedure TDatenbank.SetOnFehler(Value: TFehlerEvent);
begin
FOnFehler := Value;
end;
procedure TDatenbank.Fehler(sFehler: integer);
begin
If Assigned(FOnFehler)
then
FOnFehler(sFehler);
end;
procedure TDatenbank.iniOnFehler(sFehlercode: integer);
begin
Fehler(sFehlercode);
end;
procedure TDatenbank.beenden;
begin
if FMysql.Connected
then
FMysql.Disconnect;
end;
procedure TDatenbank.verbinden;
begin
beenden;
FMysql.HostName := ini.lese('
db', '
host');
FMysql.port := StrToInt(ini.lese('
db', '
port'));
FMysql.user := ini.lese('
db', '
benutzer');;
FMysql.password := ini.lese('
db', '
passwort');;
FMysql.Database := ini.lese('
db', '
datenbank');
FMysql.protocol := '
mysql-3.23';
FMysql.
ReadOnly := false;
FMysql.connect;
if not FMysql.connected
then
Fehler(10001);
end;
procedure TDatenbank.abfrage(sAbfrage:
String);
var q:
string;
ex: boolean;
begin
verbinden;
FAbfrage.SQL.text := sAbfrage;
FAbfrage.open;
beenden;
end;
end.