Bei Deinem 2. ExecSQL führst Du irgendwas aus, was aus mehreren Strings zusammengesetzt ist.
Da uns der Inhalt nicht bekannt ist, ist es annähernd unmöglich, hier irgendwie brauchbare Hilfestellung zu geben.
Normalerweise kann ExecSQL (wie oben schon angemerkt) nur ein Statement, also z. B. das Create von einer Tabelle, ein einzelnes Insert, ein einzelnes Update ..., aber keine Abfolge von mehr oder weniger Statments: Sprich: (höchstwahrscheinlich) keine Scripte.
Zitat:
"...("CSS-Tabelle_idCSS");''CREATE TABLE "ContentMasterData..."
Da ist mit vollkommen unklar, welches " jetzt am Anfang eines Statements, eines Wertes ... steht und welches am Ende. Wenn man sich das dann auch nochmal per Copy&Paste in 'nen Editor holt, erkennt man, dass dort einfach und doppelte Hochkommata schön gemischt sind.
Wenn die Anzahl der " beim Zusammenbau des SQLString aus einer Vielzahl weiterer Strings nicht so ganz zusammen passt, kann das zu diversen Fehlern führen, die man anhand der Fehlermeldung allein niemals finden und beheben kann.
Dann werden da mehrere String hintereinander gehängt, ist jeder ein vollständiges Statement, bei dem auch sichergestellt ist, dass es mit ; endet?
Meine Regel ist: Ein Statement ein ExecSQL (auch dann, wenn ich es anders lösen könnte). Dadurch weiß ich im Fehlerfalle immer, welches Statement den Fehler auslöste und muss nicht ggfls. tausende von Zeilen durchsuchen, um irgendwo einen Fehler zu finden.
Möchte man z. B. im Zusammenhang mit einer Firebird-Datenbank mehrere Statements als Script per ExecSQL ausführen, muss man es in dieser Art machen:
SQL-Code:
EXECUTE BLOCK AS BEGIN
Statement_1;
...
Statement_n;
END
Andernfalls erntet man bestenfalls nur 'ne Fehlermeldung.
Ob SQLite sowas unterstützt, weiß ich nicht.