Im zweiten Teil ist es klarer und verständlicher ...
Und der Compiler prüft auch die zugewiesenen Typen.
Ja, bei Schleifen, kommt man besser, wenn man sich die Felder vorher besorgt, falls das die Komponente nicht gleich bietet.
Einige
Query-Komponenten (auf der Form abgelegt) bieten die Möglichkeiten die ensprechenden Feld-/Paramer-Komponenten (TField/TParam) direkt erstellen zu lassen.
Delphi-Quellcode:
Query.Insert;
QueryFeldA.AsString := '
123';
// bzw. Query.FeldA.AsString := '123';
Query.Post;
statt
Delphi-Quellcode:
Query.Insert;
Query.FieldByName(FeldA).AsString := '
123';
Query.Post;
Das gibt im Code nochmal einen Schritt mehr, in punkto Codesicherheit, da hier der Compiler die hingeschriebenen Komponentennamen prüfen kann, ob es das TField auch gibt
und die Codevervollständigung schlägt einem die Namen ebenfalls vor.
Entsprechendes gilt z.B. auch für die ORMs.
Nja, selbst wenn man nicht das Performance-Plus ausnutzt und wenn man oft im Code irgendwelche Queries aufruft, dann kann man dennoch nummerierte Parameter benutzen.
Delphi-Quellcode:
with x.LoadSql('SELECT * FROM tabelle WHERE feld = :param', ['abc']) do
try
while not EoF do begin
// mach was, mit FieldByName['xxx']
Next;
end;
finally
Free;
end;
S := x.GetStr('SELECT xxx FROM tabelle WHERE feld = :param AND x <> :x', ['abc', 3]);
ShowMessage(S);
So ist der Code immernoch übersichtlicher und fehlerunanfälliger, als wenn da erst der
SQL-String wirr zusammengemanscht wird.
Das Parameter-Array kann dabei z.B. die
SQL-Parameter in der Reihenfolge der benutzen Namen enthalten, gefolgt von eventuellen Makros.