![](styles/elise/misc/quote_24x24.png)
Zitat von
scrat1979:
Aber warum MUSS(?) man parametisierte Abfragen benutzen?
Bei der Parametisierung brauchst Du nicht auf die Formatierung in der
SQL-Anweisung zu achten, ob Du jetzt zum Beispiel ein Hochkomma schreiben musst oder nicht.
Ein Beispiel :
Query.SQL.Add('INSERT INTO TBLCALENDAR(ISHOLIDAY, Reiseziel, Startflughafen) VALUES(0,''''Hawaii'''', ''''Frankfurt'''');');
Wenn Du jetzt noch mehrere solcher Felder hast, tust Du Dich schwer den kompletten
SQL richtig vernüpftig zu lesen. Jetzt gibt es zwei Varianten, wie man das ganze etwas überischtlicher gestalten kann.
1. Möglichkeit:
Hier muss ich aber wieder auf die Formatierung in der
SQL-Anweisung achten. Ich ersetze die vier Hochkommas durch QuotedStr. Das ganze sieht dann so aus :
Query.SQL.Add('INSERT INTO TBLCALENDAR(ISHOLIDAY, Reiseziel, Startflughafen) VALUES(0,' + QuotedStr('Hawaii') + ', ' + QuotedStr('Frankfurt') + ');');
Das ganze ist zwar schon besser zu lesen und übersichtlicher, aber den kompletten Insert-Befehl kann ich nicht erkennen.
2. Möglichkeit:
Die Werte, die ich über Variablen oder Fest in den
SQL-Befehl einfügen will, übergebe ich mit Parametern. Das ganze sieht dann so aus :
Delphi-Quellcode:
Query.SQL.Add('
INSERT INTO TBLCALENDAR(IsHoliday, Reiseziel, Startflughafen) VALUES (:IsHoliday, :Reiseziel, :StartFlughafen);');
Query.SQL.ParamByName('
IsHoliday').AsInteger := 0;
Query.SQL.ParamByName('
Reiseziel').AsString := '
Hawaii';
Query.SQL.ParamByName('
StartFlughafen').AsString := '
Frankfurt';
Hier sehe ich einwandfrei den
SQL-Befehl und weiss was er macht. In den Zeilen darunter sehe ich dann die übergebenen Parameter. Was auch der Übersichtlichkeit dient. Ein weiterer Vorteil ist, dass ich jetzt die
Query nehmen kann und hier immer nur noch die Parameter übergebe und dann den
SQL-Befehl ausführen kann ohne jedes mal überlegen zu müssen, was muss ich wohin schreiben.