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).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!