Ich denke, ich muß bisher gesagtes wiederholen:
für ExecSQL/SQLExec nur EIN Statement !
Zumindest in der Entwicklungsphase, wenn man mit dem
DBMS nicht so vertraut ist.
Das ist somit ein NoGo:
Zitat:
SQLString := 'CREATE TABLE ContentMasterData.bilddescribetabelle('+
.......
'REFERENCES "bildtabelle"("idBild"));'+
'CREATE INDEX ".....
Delphi-Quellcode:
procedure TDMLSQLite.ContentmasterDBCreate;
var SQLString:
String;
begin
try
DMLSQLite.FDSQLiteConnection.Connected := false;
FDSQLiteConnection.ExecSQL('
ATTACH "M:\SQLite-DB Corner\ContentMasterData\ContentMasterData.sqlite" AS ContentMasterData');
// DMLSQLite.FDSQLiteConnection.Params.Values['Database']:='"M:\SQLite-DB Corner\ContentMasterData\ContentMasterData.sqlite"';
// War obige Zeile nicht auskommentiert: Unbekannte Datenbank. Danach liefen alle Createanweisungen durch. Beim nächsten ExecCSQL krachte es
DMLSQLite.FDSQLiteConnection.Params.Values['
FailIfMissing']:='
False';
DMLSQLite.FDSQLiteConnection.Params.Values['
PRAGMA foreign_keys']:='
ON';
SQLiteTestMain.LBxPathlist.Items.AddStrings(FDSQLiteConnection.Params);
DMLSQLite.FDSQLiteConnection.Connected := true;
DMLSQLite.FDSQLiteConnection.GetInfoReport(SQLiteTestMain.Memo1.Lines);
SQLString := '
';
SQLString := Createbilddescribetabelle;
Falls mit
TDMLSQLite und
DMLSQLite das selbe gemeint sein sollte, solltest Du
self. nutzen. Dann gibt es auch kein Vertun, was denn womit gemeint ist. (Das gilt für den Compiler wie für den Programmierer).
Aus dem Anhang in #35 geht hervor, das irgendwo auf dem Laufwerk M: eine Datei existiert, die wohl ein Datenbank enthält. Diese Datenbank
ContentMasterData enthält die Tabelle
bilddescribetbelle.
Versuch doch mal in einem Testprogramm einen Connect durchzuführen und dann mit
select * from bilddescribetabelle
bzw.
select * from ContentMasterData.bilddescribetabelle
auf diese Tabelle zuzugreifen.
Übrigens ein .connected:=false; direkt gefolgt von einem .ExecSQL erschein nicht sehr sinnvoll.
Gruß
K-H