AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Parameterübergabe
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Parameterübergabe

Ein Thema von Daniela.S · begonnen am 2. Jul 2010 · letzter Beitrag vom 4. Jul 2010
Antwort Antwort
Benutzerbild von Daniela.S
Daniela.S

Registriert seit: 1. Mär 2008
Ort: Niederösterreich
226 Beiträge
 
Delphi XE4 Enterprise
 
#1

SQL Parameterübergabe

  Alt 2. Jul 2010, 08:56
Datenbank: EGAL • Version: EGAL • Zugriff über: SQL
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...
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: SQL Parameterübergabe

  Alt 2. Jul 2010, 09:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#3

AW: SQL Parameterübergabe

  Alt 2. Jul 2010, 09:16
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.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#4

AW: SQL Parameterübergabe

  Alt 2. Jul 2010, 09:54
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.
Normalerweise sollte das keinen Unterschied machen, weil das Statement so oder so "prepared" werden muss.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: SQL Parameterübergabe

  Alt 2. Jul 2010, 10:00
Je nach DBMS besteht da aber ein Unterschied
Markus Kinzler
  Mit Zitat antworten Zitat
Mschmidt

Registriert seit: 4. Jul 2010
Ort: Berlin
62 Beiträge
 
Delphi XE2 Professional
 
#6

AW: SQL Parameterübergabe

  Alt 4. Jul 2010, 19:35
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz