Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#41

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 16:56
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat