Der Rückgabewert der Funktion ist nur False, wenn ein Datenbankfehler geworfen wird. In anderen Fällen ist Result entweder True oder undefiniert.
(Eigentlich müsste es eine entsprechende Compilermeldung geben - Rückgabewert könnte undefiniert sein. o. ä .)
Wenn FDSQLiteConnection.ExecSQL(ASQL) ausgeführt wird und keine
Exception fliegt, ist der Rückgabewert der Funktion true, unabhängig davon, ob das erwartete erledigt wurde oder nicht.
Delphi-Quellcode:
function TDMLSQLite.ExecuteSQL(ASQL : String) : Boolean;
begin
Result := False;
try
FDSQLiteConnection.ExecSQL(ASQL);
// Hier sollte man noch prüfen, ob das, was in ASQL gemacht werden
// soll, auch wirklich gemacht wurde.
// Bei Insert, Update und Delete findet man die Anzahl der
// Änderungen in RowsAffected.
// Bei 'ner Tabelle, die erstellt werden sollte, könnte man noch ein
// select * from tabelle
// hier ausführen und nur, wenn das erfolgreich ist folgt:
Result := True;
except
on E: EDatabaseError do begin
ShowMessage('Fehler beim Ausführen des Statements:' + #13#13 + ASQL + #13#13 + E.Message);
end;
end;
end;