Bei einer Funktion der ich einen SQL String übergebe (Zeos, TZQuery) möchte ich erreichen dass im Exception-Fall nichts passiert. Also die Exception nicht in irgend einer Messagebox angezeigt wird und damit das Programm stoppt
Hintergrund: Es läuft eine Art Batchverarbeitung bei der automatisch Tabellen und Felder in der DB erzeugt werden sollen. Wenn ich da jedesmal vorher alle Spalten und Tabellen des SQL Statements prüfe dauert das viel zu lange. Daher wählte ich die Strategie erst nach einer Exception die Prüfprozeduren anzuwerfen.
Ich dachte, wenn ich die Exception abfange reicht das. Leider erzeugt ZEOS eigene Fehlermeldungen die angezeigt werden. Kann man die irgendwie (idealerweise temporär) abschalten ?
Code: Alles auswählen
function TdmData.RunSQLExec(const sSQL: string): boolean;
begin
result:=true;
try
if zQuery1.Active then zQuery1.Close;
zQuery1.SQL.Clear;
zQuery1.SQL.Add(sSQL);
zQuery1.ExecSQL; //<< hier kommt die Fehlermeldung, die ich nicht haben will ;-)
except
on E: Exception do
begin
//hier bestenfalls eine stille Log-Message
result:=false;
end;
end;
end;
Code: Alles auswählen
INSERT INTO ttemp ( F1, F2 ) VALUES ( '12345', 'ABCD');
Die Fehlermeldung wird in der unit ZDbcMySqlUtils (procedure CheckMySQLError) der Zeos-Komponenten erzeugt.
Bin auch offen für andere Lösungswege.
THX