Entwickler-Ecke

Sonstiges (Delphi) - SQL Abfrage guter Stil


ProggyPeter - Di 20.11.12 21:21
Titel: SQL Abfrage guter Stil
Hallo,
wir streiten gerade, was bei einer SQL Abfrage der bessere Programmierstil ist.

1. Der Abfragetext direkt im Quelltext.


Delphi-Quelltext
1:
2:
Query.SQL.Text := 'Select * From Table Where ID=:ID';
Query.ParambyName('ID').asinteger := 1;


2. Die Abfrage als Konstante im Quelltext


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Const
 cReadTable = 'Select * From Table Where ID=:ID';
.
.
Query.SQL.Text := cReadTable;
Query.ParambyName('ID').asinteger := 1;


Und dann noch die Variationen.
1. Alle Abfragetexte in einer eigenen Datei (Unit).


2. Parameter über Format


Delphi-Quelltext
1:
2:
Query.SQL.Text := Format('Select * From Table Where ID=%d', [1]);;
Query.ParambyName('ID').asinteger := 1;


Oder gibt es noch einen anderen Weg?
Dazu würde mich Eure Meinung interessieren.

Mit Grüßen


Nersgatt - Di 20.11.12 21:41

Ich persönlich verwende meistens die erste Methode, wenn die Query nur an einer Stelle im Code benutzt wird. Wird die selbe Query an mehreren Stellen benutzt, dann erstelle ich entweder ne View, ne Procedure oder ne Konstante.

Den Parameter über Format zu übergeben sollte man tunlichst lassen. Bei IDs ist es vielleicht nicht so wild, aber spätestens bei Strings muss man anfangen zu escapen. Und das artet in Arbeit aus und ist sehr fehleranfällig.
Außerdem kann der Datenbankserver bei der Variante mit den Parametern die Query einmal vorbereiten (also parsen) und sie dann n-mal ausführen. Den Aufwand, sie zu parsen hat der Server dann nur einmal. Das hat dann einen erheblichen Geschwindigkeitsvorteil, wenn man die selbe Query oft ausführt (z.B. wenn man Daten importiert).