AGB  ·  Datenschutz  ·  Impressum  







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

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
64 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
4.448 Beiträge
 
Delphi 10.1 Berlin Professional
 
#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
64 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
4.448 Beiträge
 
Delphi 10.1 Berlin Professional
 
#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
7.788 Beiträge
 
Delphi 10.4 Sydney
 
#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
271 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
4.448 Beiträge
 
Delphi 10.1 Berlin Professional
 
#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
271 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
36.149 Beiträge
 
Delphi 10.4 Sydney
 
#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.
Delphi-Tage 2005-2014

Geändert von himitsu (17. Jun 2020 um 14:53 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf