![]() |
Datenbank: EGAL • Version: EGAL • Zugriff über: SQL
SQL Parameterübergabe
Hallo,
ich habe mal eine Frage zur Parameterübergabe bei SQL Abfragen. Habe kein Problem oder dergleichen, es geht mir einfach um den besten Stil. Vielleicht so
Delphi-Quellcode:
Query.SQL.Text := 'SELECT * FROM tblTest WHERE (intField1=:pID) AND (strField=:pText)';
Query.Parameters[0].Value = 1; Query.Parameters[1].Value = 'test'; Query.Open; oder die Parameter per Namen ansprechen?
Delphi-Quellcode:
Query.SQL.Text := 'SELECT * FROM tblTest WHERE (intField1=:pID) AND (strField=:pText)';
Query.Parameters.ParamByName('pID').Value = 1; Query.Parameters.ParamByName('pText').Value = 'test'; Query.Open; oder jedes Mal Prepared aufrufen
Delphi-Quellcode:
Query.SQL.Text := 'SELECT * FROM tblTest WHERE (intField1=:pID) AND (strField=:pText)';
Query.Prepared := True; Query.Parameters.ParamByName('pID').Value = 1; Query.Parameters.ParamByName('pText').Value = 'test'; Query.Open; oder was weiss ich... Wie handhabt ihr das und womit habt ihr die besten Erfahrungen gemacht? Würde mich einmal generell interessieren... |
AW: SQL Parameterübergabe
Parameter per Namen anzusprechen ist sicher sauberer als sie über ihren Index anzusprechen.
Dies gilt umso mehr je weiter die SQL-Anweisung von dem Setzen der Parameter entfernt ist. Der Aufruf von Prepared:=True mach nur dann Sinn, wenn Query.SQL nur einmal definiert wird, aber sehr oft mit wechselnden Parametern aufgerufen wird. Wenn man jedesmal das Property SQL setzt, dann wirkt Prepared:=True eher bremsend auf die Ausführungsgeschwindigkeit. |
AW: SQL Parameterübergabe
Ich nutze eigentlich immer die ParamByName-Methode, wobei sich das "Prepared" ja nur lohnt, wenn man weiß, dass die Abfrage mehrmals hintereinander ausgeführt wird.
|
AW: SQL Parameterübergabe
Zitat:
|
AW: SQL Parameterübergabe
Je nach DBMS besteht da aber ein Unterschied
|
AW: SQL Parameterübergabe
Ich würde als Empfehlung auch noch den Datentyp, query.ParamByname('').datatype:=...
setzen. Ich bin bei Oracle mit unterschiedlichem Zeichensatz (Client=Ansi, Server=Unicode) und den TOraComponenten (DevArt) damit mal ins nirwana gelandet. MSchmidt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz