Praktische Benutzung von Prepare

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Antworten
zappa2
Beiträge: 23
Registriert: Fr 5. Okt 2018, 10:59

Mal eine grundsätzliche Frage zu Prepare: Wann wird das denn nun sinnvollerweise aufgerufen?
(A)Vor oder (B)nach dem Zuweisen der Feldwerte?

Code: Alles auswählen

myQuery.Close;

A) myQuery.Prepare;
myQuery.Params[0].Value := Wert1;
myQuery.Params[1].Value := Wert2;
B) myQuery.Prepare;

myQuery.Open;
Ich sehe beide Varianten in Beispielen, habe aber noch nirgends eine sinnvolle Erläuterung zu Prepare gefunden.
bfuerchau
Beiträge: 283
Registriert: Mo 7. Mai 2018, 18:09

Das ist vollkommen egal.
Wichtig ist der SQL-String selber.
Dazu muss der String und die Parameterliste erstellt sein, dann ruft man den Prepare auf.
Anschließend kann man sooft man will die Paramterwerte verändern.
Ein Ändern der Parameterliste ist dann nicht mehr erlaubt.
zappa2
Beiträge: 23
Registriert: Fr 5. Okt 2018, 10:59

Wie immer: Vielen Dank für die schnelle Antwort!
bfuerchau
Beiträge: 283
Registriert: Mo 7. Mai 2018, 18:09

Bei vielen Inserts und Updates z.B. kann mittels Parameterlisten und Prepare die Geschwindigkeit der Ausführung erheblich gesteigert werden als mit eingebetteten Konstanten.
Bei Abfragen wird eine Zugriffsanalyse (Indexverwendung) nur beim Prepare durchgeführt. Wiederholte Abfragen mit anderen Werten können dann auch entsprechend schneller durchgeführt werden.
Und noch ein Punkt:
SQL-Injection ist dann vollkommen unmöglich.
Antworten