Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ein String erzeugt ein SQL Statement? (https://www.delphipraxis.net/207916-ein-string-erzeugt-ein-sql-statement.html)

NoGAD 16. Mai 2021 00:02

Datenbank: ABS_Database • Version: 7.92 • Zugriff über: ABSTable

Ein String erzeugt ein SQL Statement?
 
Hallo,

folgender String ergibt beim Hinzufügen zu einem Tabellenfeld eine merkwürdige Fehlermeldung:

Delphi-Quellcode:
'"Ueber die scenische Darstellung des Goethe''schen Faust und Seydelmann''s Auffassung des Mephistopheles"'


Es erscheint folgende Fehlermeldung:

Zitat:

Erste Gelegenheit für Exception bei $75BEA6E2. Exception-Klasse EABSException mit Meldung 'End of SQL command expected, but 'schen' found at line 1, column 91 - Native error: 20260'. Prozess Project_Bibo2_2.exe (7208)


Das Tabellenfeld ist ein String, 250 Zeichen groß. Was zu viel an Text ist, wird eigentlich verworfen. (Ist momentan auch so gewollt)

Hat das schonmal jemand erlebt und kann mir erklären, was da vor sich geht?


LG Mathias

Klaus01 16. Mai 2021 08:30

AW: Ein String erzeugt ein SQL Statement?
 
Guten Morgen,

wie baust Du Dir denn Dein Insert Statement zusammen?

Code:
insert into <TableName>
values (.., :Buchbeschreibung, .., ..);

query.ParamByName('Buchbeschreibung').asString := 'Ueber die scenische Darstellung des Goethe'''schen Faust und Seydelmann'''s Auffassung des Mephistopheles';
Grüße
Klaus

himitsu 16. Mai 2021 09:51

AW: Ein String erzeugt ein SQL Statement?
 
Grund: '', also das einfache '

PascalStrings und SQL-Strings escapen nunmal anders.

Lösung: \''

Leider empfehlen viele Delphi-Referenz durchsuchenQuoteStr (sogar Demos in der OH), was aber ebenfalls total falsch ist, da QuoteStr die Delphi-Syntax verwendet.

Jede DB-Komponente sollte irgendwo eine Escape-Funktion haben, welche man verwenden kann, denn die benutzt die SQL-Syntax der jeweiligen DB,
oder eben man arbeitet mit Parametern und erspart sich den ganzen Mist.

NoGAD 21. Mai 2021 00:03

AW: Ein String erzeugt ein SQL Statement?
 
Hallo und vielen Dank für den Hinweis.

Gibt es denn noch mehr Zeichen, die hier Probleme machen können?

LG Mathias

himitsu 21. Mai 2021 00:25

AW: Ein String erzeugt ein SQL Statement?
 
Ja,

aber das ist total egal, wenn man es richtig macht.


SQL-Parameter verwenden,
oder zumindestens die Escape-/Quote-Funktion der DB-Komponente.

NoGAD 21. Mai 2021 00:32

AW: Ein String erzeugt ein SQL Statement?
 
Für mich als Laien: was meinst Du bitte mit SQL Parametern?

LG

DeddyH 21. Mai 2021 05:44

AW: Ein String erzeugt ein SQL Statement?
 
Hier im Forum suchenSQL-Parameter

himitsu 21. Mai 2021 10:41

AW: Ein String erzeugt ein SQL Statement?
 
und siehe Post #2 :wink:

NoGAD 21. Mai 2021 13:07

AW: Ein String erzeugt ein SQL Statement?
 
Hallo nochmal.

Mein Problem bezieht sich jedoch überhaupt nicht auf SQL, da ich die Werte über eine Art TTable in die Datenbank schreibe. Somit benötige ich ja gar keine SQL Parameter.

Und dennoch wird diese ominöse Fehlermeldung ausgegeben.

LG Mathias

himitsu 21. Mai 2021 13:23

AW: Ein String erzeugt ein SQL Statement?
 
Dann hat wohl deine TTable einen Fehler :?:


Aber egal.
Gibt es eine TQuery oder so?
SQL-Code:
SELECT * FROM tablename
und schon kommt das Gleiche bei raus.

[edit]
Wobei, wenn die TTable schon nicht funktioniert, wieso sollte dann der Rest funktionieren?

An deiner Stelle würde ich mich mal an den Hersteller dieser Komponenten wenden, damit er den Fehler repariert.
[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 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