AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

Ein Thema von bogdan · begonnen am 15. Jun 2020 · letzter Beitrag vom 17. Jun 2020
Antwort Antwort
bogdan

Registriert seit: 15. Apr 2013
77 Beiträge
 
#1

FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 15. Jun 2020, 10:30
Datenbank: MySQL • Version: Neueste • Zugriff über: FireDac
Hallo Zusammen,

Delphi Version: Rad Studio XE8 64Bit
Windows 10 Pro

für DB Abfragen nutze ich ab und zu FireDAC Komponenten.
FDConnection, FDQuery, FDPhysMySQLDriverLink, FDGUIxWaitCursor und DataSource Compo.

Die MySQL Tabellen sind recht einfach aufgebaut, Spalten:
ID, TimeRec, TimeUpd, Active, Wert1 (VarChar), Wert2 (VarChar), usw.

In der Spalte Wert1 steht zb. Yamaha oder Roland oder K&M.

SELECT * FROM Tabelle1, WHERE Wert1 = "Yamaha" -> zeigt richtige Datensätze an
SELECT * FROM Tabelle1, WHERE Wert1 = "K&M" -> zeigt keinen einzigen Datensatz an

Die gleichen SELECT Abfragen habe ich im MySQL Workbench Applikation und über die Zeos Access Komponente ausprobiert. Hier werden mir auch die Datensätze mit "K&M" richtig angezeigt.

Was mache ich falsch bei FireDAC?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#2

AW: FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 15. Jun 2020, 10:41
Moin...
Zitat:
Was mache ich falsch bei FireDAC?
...keine Parameter zu benutzen!

Delphi-Quellcode:
Query.SQL.Text := 'SELECT * FROM Tabelle1, WHERE Wert1 = :Blubb'
Query.ParamByName('Blubb').AsString := 'K&M';
  Mit Zitat antworten Zitat
bogdan

Registriert seit: 15. Apr 2013
77 Beiträge
 
#3

AW: FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 15. Jun 2020, 10:47
Morgen haentschman,

hab's ausprobiert, es geht

vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#4

AW: FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 15. Jun 2020, 10:50
...immer mit Parametern arbeiten.
Wegen: https://de.wikipedia.org/wiki/SQL-Injection
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 15. Jun 2020, 12:18
Hier schlägt das Vorverarbeiten von Anweisungstext zu. Auf der DocWiki-Seite ist unter Verarbeitung von Sonderzeichen auch gleich ein Hinweis zu finden, wie man das umgehen kann.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#6

AW: FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 15. Jun 2020, 16:57
Dumm nur, dass man bei der "IN" Anweisung ("SELECT bla FROM blubb WHERE fasel IN (...)") nicht mit Parametern arbeiten kann....
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#7

AW: FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 16. Jun 2020, 07:52
Moin...
Zitat:
Dumm nur, dass man bei der "IN" Anweisung...
Falsch...

Prinzip:
Delphi-Quellcode:
Qry.SQL.Text := 'select ixAdr from ADR where ixAdr in (:A, :B)';
Qry.ParamByName('A').AsString := '1000';
Qry.ParamByName('B').AsString := '9999';
Qry.Open;
Dazu gehört eine procedure, die den SQL.Text (Bsp: :A, :B), die Anzahl der Parameter (Bsp: 'A') und den ParameterValue (Bsp: '1000') aus der übergebenden Liste aufbaut.
...die muß man selbst programmieren.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#8

AW: FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 17. Jun 2020, 14:26
Moin...
Dazu gehört eine procedure, die den SQL.Text (Bsp: :A, :B), die Anzahl der Parameter (Bsp: 'A') und den ParameterValue (Bsp: '1000') aus der übergebenden Liste aufbaut.
...die muß man selbst programmieren.
Jetzt wo ich das sehe... erinnere ich mich, das selbst mal so gemacht zu haben. Sogar mit "Intelligenz", d.h. waren es mehr als 20 Parameter, hat das Programm eine temporäre Tabelle erzeugt, die Werte da reingehauen und dann statt "IN" die temporäre Tabelle geJOINt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#9

AW: FireDAC MySQL Abfrage mit "K&M" String funktioniert nicht

  Alt 17. Jun 2020, 14:49
Bei einer festen Anzahl im IN mag das noch gehn,
ABER falls man nicht ständig das SQL neu generieren will....

ja, ist böse und hatte ich nur für Integer-Listen benutzt,
select ixAdr from ADR where ixAdr in (&params)
Qry.ParamByName('params').Value := '1000,9999';

also doch besser wieder die/den "sicheren" Parameter benutzen
select ixAdr from ADR where ixAdr in (select unnest(string_to_array(:params, ',')))
Qry.ParamByName('params').AsString := ArrayToString(ParameterListe, ',');
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Jun 2020 um 14:53 Uhr)
  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 16:20 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