Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FireDAC Makro vs Parameter (https://www.delphipraxis.net/194455-firedac-makro-vs-parameter.html)

Elrond 23. Nov 2017 14:10

Datenbank: Any • Version: 1 • Zugriff über: FireDAC

FireDAC Makro vs Parameter
 
Hallo Zusammen,

ich arbeite mich gerade in FireDAC ein und mir ist nicht klar was der Unterschied zwischen einen Makro und Parameter ist.
Nach den lesen der Dokumentation habe ich irgendwie den Eindruck das beide das selbe machen.

Viele Grüße

mkinzler 23. Nov 2017 14:15

AW: FireDAC Makro vs Parameter
 
Auf den ersten Blick ja, auf den 2. aber nicht mehr.
Bei der Verwendung wird die Abfrage mit den Parametern (nicht den Werten) an das DBMS gesendet. Dort wird die Abfrage dann werteunabhängig vorbereitet ( Zugriffsplan usw.). Anschliessend werden die Werte übermittelt und auf die vorbereitete Abfarge angewendet. Dies kann auch mehrfach geschehen, der Pepare muss nur einmal stattfinden.
Bei den Makros wird lokal eine Abfrage mit den konkreten Werten gebildet.
Makros kann man deshalb auch für Dinge verwenden, welche nicht parametrisierbar sind (Datenbanken, Tabellen, Felder ...). Parameter gehen nur für Werte.

Der schöne Günther 23. Nov 2017 14:50

AW: FireDAC Makro vs Parameter
 
Danke auch von mir für die Erklärung.

Das hieße dass bspw. Parameter u.U. auch auf Seite des DBMS unterstützt werden während "FireDAC Makros" etwas sind das garantiert immer Client-seitig abläuft?

mkinzler 23. Nov 2017 15:17

AW: FireDAC Makro vs Parameter
 
Ja. Parameter sind ein Feature des DBMS (sollte aber von jedem unterstützt werden).
Mit Makros wird lokal im Client für jede Ausprägung die individuelle Abfrage erzeugt.

HeZa 23. Nov 2017 17:12

AW: FireDAC Makro vs Parameter
 
Ich möchte noch hinzufügen, dass Parameter vor SQL-Injection (ein Sicherheitsproblem) schützen Macros aber nicht.

Der schöne Günther 23. Nov 2017 17:30

AW: FireDAC Makro vs Parameter
 
Ok, das wäre meine nächste Frage gewesen. Danke fürs Gedankenlesen :thumb:

Elrond 24. Nov 2017 07:16

AW: FireDAC Makro vs Parameter
 
Auch von mir ein Danke für die kompakte Erklärung.

dataspider 24. Nov 2017 07:41

AW: FireDAC Makro vs Parameter
 
Makro braucht man dann, wenn man nicht Werte, sondern z.B. Feldnamen oder komplexe Teile ersetzen muss.

Beispiel: select * from rechnung where mandant_nummer in <<nummern>>.

Dann kann man <<nummern>> ersetzen durch ('300', '301', '400').

Das geht mit Params nicht.

Frank

haentschman 24. Nov 2017 07:57

AW: FireDAC Makro vs Parameter
 
Moin...:P
Ich mache ja ungern die Spaßbremse. :wink: So schön wie das alles ist, du bindest dich mit Macros ausschließlich an diese Komponente. Für meinen Teil schwöre ich auf klassisches SQL mit klassischen Querys. Mit einer ausgetauschten Deklaration habe ich einen Komponentenwechsel (sinngemäß)...:thumb:

Elrond 24. Nov 2017 09:34

AW: FireDAC Makro vs Parameter
 
Zitat:

Zitat von haentschman (Beitrag 1387045)
Moin...:P
Ich mache ja ungern die Spaßbremse. :wink: So schön wie das alles ist, du bindest dich mit Macros ausschließlich an diese Komponente. Für meinen Teil schwöre ich auf klassisches SQL mit klassischen Querys. Mit einer ausgetauschten Deklaration habe ich einen Komponentenwechsel (sinngemäß)...:thumb:

In der Regel ist das auch meine bevorzugte Herangehensweise. Jedoch stehe ich aktuell vor der Anforderung mindestens drei unterschiedliche Datenbanksysteme zu unterstützen. Würde ich auf reines SQL zurückgreifen müsste ich für jede DB alle Querys unter Beachtung der Syntaxregeln neu schreiben, hinzukommt noch die individuelle Unterstützung von Transaktionen. Am ende hätte ich meinen eigenen DAC Derivaten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Seite 1 von 2  1 2      

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