AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC - SQL mit gesetzten Parameter abfragen?
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC - SQL mit gesetzten Parameter abfragen?

Ein Thema von Eppos · begonnen am 9. Feb 2015 · letzter Beitrag vom 9. Feb 2015
Antwort Antwort
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#1

FireDAC - SQL mit gesetzten Parameter abfragen?

  Alt 9. Feb 2015, 10:26
Datenbank: Firebird • Version: 2.5.3 • Zugriff über: FireDAC
Hallo zusammen,

gibt es die Möglichkeit, sich aus dem TFDQuery den SQL mit den Parameter zurück zu liefern?

Beispiel:
Delphi-Quellcode:
Query.Sql.Text := 'Insert Into Tabelle1 (ID,Text) Values (:ID,:Text)';
Query.ParamByName( 'ID' ).AsInteger := 1;
Query.ParamByName( 'Text' ).AsString := 'Testtext';

ShowMessage( Query.GetSQLTextWithParams {Insert Into Tabelle1 (ID,Text) Values (1,'Testtext')} ); // Möglich???
Gruß
Eppos

Geändert von Eppos ( 9. Feb 2015 um 10:27 Uhr) Grund: Hochkommas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: FireDAC - SQL mit gesetzten Parameter abfragen?

  Alt 9. Feb 2015, 10:34
Da die Parameter vom Server in die (prepared) Abfrage eingefüht werden, müsste man die resultierende Abfrage von dort erfragen.
Bei IBDAC/UniDAC kann man das per Monitoring (SQl Monitor). Bei FireDAC gibt es diesen ja auch, könnte also entsprechend funktionieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: FireDAC - SQL mit gesetzten Parameter abfragen?

  Alt 9. Feb 2015, 19:12
Korrekterweise müsste man sagen: "Da die Parameter eigentlich vom Server in die prepared Abfrage ..." denn speziell FireDAC macht das nicht durchgängig bei jedem Server (wird das überhaupt bei einem gemacht - bis jetzt noch nicht gesehen, bei MySQL definitiv nicht).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: FireDAC - SQL mit gesetzten Parameter abfragen?

  Alt 9. Feb 2015, 20:24
Echt? Damit disqualifiziert sich FireDAC für den professionellen Einsatz.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: FireDAC - SQL mit gesetzten Parameter abfragen?

  Alt 9. Feb 2015, 20:59
Echt? Damit disqualifiziert sich FireDAC für den professionellen Einsatz.
Wenn man Wireshark vertrauen kann, dann wird bei MySQL immer das komplette Statement mit eingesetzten Parametern übertragen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: FireDAC - SQL mit gesetzten Parameter abfragen?

  Alt 9. Feb 2015, 21:26
Das wäre dann Abtraktion, wie man sie nicht machen sollte, wenn es ein DBMS gibt, welches keine Parameter kann, dann simuliere diese für alle DBMS.

Laut der Hilfe zu FireDAC sollte es aber richtig funktionieren

Zitat von http://docs.embarcadero.com/products/rad_studio/firedac/Executing_Command.html:
Using parameters

The parameterized query usage is one of the best practices at SQL database application development. Main benefits are:

you may compose single SQL command and use it few times with different parameter values. DBMS will build command execution plan only once. That reduces the DBMS engine load.
when you will execute the command next time, only parameter values will be transferred to the DBMS engine. That reduces network load.
you will not care about correct SQL constant formats, for example - how to properly write a date constant in Microsoft Access SQL.
Markus Kinzler

Geändert von mkinzler ( 9. Feb 2015 um 21:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: FireDAC - SQL mit gesetzten Parameter abfragen?

  Alt 9. Feb 2015, 21:58
Du weißt doch wie es ist: Papier ist geduldig, Wireshark unbestechlich.

Ich habe es auch nicht geglaubt und wurde eines besseren belehrt.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#8

AW: FireDAC - SQL mit gesetzten Parameter abfragen?

  Alt 9. Feb 2015, 23:39
Also bei MSSQL funktioniert es zumindest.

Aus
Delphi-Quellcode:
SELECT * FROM LIZENZEN
WHERE MAJVERSION < :version
macht FireDAC laut SQL Server Profiler
Delphi-Quellcode:
declare @p1 int
set @p1=1
exec sp_prepare @p1 output,N'@P1 int',N'SELECT * FROM LIZENZEN
WHERE MAJVERSION < @P1
',1
select @p1

exec sp_execute 1,9

exec sp_unprepare 1
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 15:41 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