AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Insert Values die "!" enthalten
Thema durchsuchen
Ansicht
Themen-Optionen

Insert Values die "!" enthalten

Ein Thema von skoschke · begonnen am 28. Jan 2022 · letzter Beitrag vom 11. Feb 2022
Antwort Antwort
Seite 1 von 2  1 2      
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#1

Insert Values die "!" enthalten

  Alt 28. Jan 2022, 08:02
Datenbank: SQLite • Version: ? • Zugriff über: FDQuery
Hallo,

bei folgender SQL-Anweisung knallt es:

Delphi-Quellcode:
FDQuery.SQL.Text := 'INSERT INTO test (name,text) VALUES ("Fritz","Hallo!")';
FDQuery.ExecSQL;
Grund ist das Ausrufezeichen.

ich kann natürlich alle Ausrufezeichen entfernen, besser wäre aber, es irgendwie zu "codieren" damit es akzeptiert wird, nur wie könnte das gehen?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

AW: Insert Values die "!" enthalten

  Alt 28. Jan 2022, 08:10
Benutze SQL-Parameter, wann immer das möglich ist (also eigentlich so gut wie immer).
Delphi-Quellcode:
FDQuery.SQL.Text := 'INSERT INTO test (name,text) VALUES (:name,:text)';
FDQuery.ParamByName('name').AsString := 'Fritz';
FDQuery.ParamByName('text').AsString := 'Hallo!';
FDQuery.ExecSQL;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (28. Jan 2022 um 08:31 Uhr) Grund: Typo korrigiert
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Insert Values die "!" enthalten

  Alt 28. Jan 2022, 10:31
Zusätzlich noch eine Kleinigkeit: In vielen DBMS ist "name" ein reserviertes Wort. Möchte man es selbst anders, z.B. als Spaltenname verwenden, möchten viele, dass man es escaped. Bei MySQL geht das zum Beispiel mit Back-Ticks: `name`
Kann je nach dem auch ohne gehen, aber sicherer ist es solche entweder zu meiden oder zu escapen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Insert Values die "!" enthalten

  Alt 28. Jan 2022, 10:43
Zitat:
entweder zu meiden
+1
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Insert Values die "!" enthalten

  Alt 28. Jan 2022, 10:48
Setzt mal in der FDQuery folgende Eigenschaften auf False: ResourceOptions.MacroCreate, MacroExpand.

Hintergrund: https://docwiki.embarcadero.com/RADS...tion_Variables

Zitat:
Substitution Variables
A substitution variable starts with the ‘!’ or ‘&’ symbol and is followed by the macro variable name. For example:

SELECT * FROM &TabName
The symbols have the following meaning:

‘!’--“string” substitution mode. The macro value will be substituted “as is”, directly into the command text without any transformation.
‘&’-–“SQL” substitution mode. The macro value will be substituted depending on the macro data type, using target DBMS syntax rules.
To use the macros, use the following code snippet:

FDQuery1.SQL.Text := 'SELECT * FROM &TabName';
FDQuery1.MacroByName('TabName').AsRaw := 'Orders';
FDQuery1.Open;
The macros are processed when ResourceOptions.MacroCreate and MacroExpand are set to True.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Insert Values die "!" enthalten

  Alt 28. Jan 2022, 11:15
Makros werden im FD auch innerhalb von Strings ersetzt?

* nja, Parameter sind für fast Alles die Lösung
* oder Double special characters
* man könnte die Makro-Expansion auch einfach deaktivieren.
* oder sowas nicht machen
* oder ...



Viel Spaß, mit all den anderen Zeichen.
https://docwiki.embarcadero.com/RADS...ter_Processing
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Jan 2022 um 11:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Insert Values die "!" enthalten

  Alt 28. Jan 2022, 11:20
Makros werden im FD auch innerhalb von Strings ersetzt?
Natürlich! Wieso sollte ein Makro innerhalb eines Strings im SQL nicht erlaubt sein.

Mal abgesehen davon, dass der String im SQL eigentlich gar nichts verloren hat. Denn:
Parameter sind für fast Alles die Lösung.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Insert Values die "!" enthalten

  Alt 28. Jan 2022, 11:27
Macht Postgres/PgDAC nicht so, also nicht innherlab von "Bezeichnern" oder 'Texten'

zu MySQL kann ich nichts sagen ... damals kannte ich sowas Exotisches wie Makros und Parameter noch nicht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Jan 2022 um 11:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Insert Values die "!" enthalten

  Alt 28. Jan 2022, 11:34
Macht Postgres/PgDAC nicht so, also nicht innherlab von "Bezeichnern" oder 'Texten'

zu MySQL kann ich nichts sagen ... damals kannte ich sowas Exotisches wie Makros und Parameter noch nicht.
Das ist ein FireDAC-Ding und hat überhaupt nichts mit der Datenbank zu tun.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Insert Values die "!" enthalten

  Alt 11. Feb 2022, 19:24
FireDAC gegen MariaDB reagiert genau so. Musste ich auch erst lernen.
Ist also ein FireDAC-Ding, so wie Uwe schreibt!

Parameter sind für fast Alles die Lösung.
100%ige Zustimmung!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:15 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