hi ihr,
ich hab ein problem mit
mySQL. zugreifen tu ich über TDatabase/TQuery.
mein code sieht so aus:
Delphi-Quellcode:
try
Query.SQL.Clear();
Query.SQL.Add('
start transaction;');
Query.ExecSQL();
Query.SQL.Clear();
Query.SQL.Add('
TRUNCATE table greeting');
Query.ExecSQL();
Query.SQL.Clear();
Query.SQL.Add('
INSERT INTO `greeting` (`topic`, `message`, `simple`) VALUES (" ", "'+AdvGreetingHTMLPreview.Caption+'
", "0")');
Query.ExecSQL();
Query.SQL.Clear();
Query.SQL.Add('
commit;');
Query.ExecSQL();
except
Query.SQL.Clear();
Query.SQL.Add('
rollback;');
Query.ExecSQL();
end;
beim ausführen des INSERT-befehls bekomme ich unter bestimmten voraussetzungen den fehler:
Code:
---------------------------
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt WebAdmin.exe ist eine
Exception der Klasse EDatabaseError aufgetreten. Meldung: 'Typ für Feld 'relative' ist unbekannt'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
der fehler kommt nur, wenn innerhalb des
SQL-statements folgendes vorkommt:
Zitat:
"foo:bar"
sprich: ein doppeltes anführungszeichen, dann irgendein string und dann ein doppelpunkt.
sobald dies innerhalb meines TQuery.SQL steht, bekomm ich diesen fehler an den kopf geworfen.
an der
mysql kanns eigentlich nicht liegen, da ich mir das vom code genrierte statement kopiert und in phpMyAdmin getestet habe - klappt einwandfrei.
irgendwie muss der
ODBC-treiber die angabe "foo:bar" als eine art feld interpretieren, dass er nicht kennt.
das problem an der sache ist, dass ich
HTML-code in die tabelle einfügen muss. ich habe schon versucht, anführungszeichen zu escapen etc., aber das einzige, was hilft, ist den doppelpunkt aus dem string zu entfernen - was aber den informationsgehalt zerstört
könnt ihr mir helfen?
danke schonmal,
aenogym