Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#42

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 17:43
PS: Mal etwas mehr oftopic:
In den MySQL Workbench-Einstellungen sind die FK-Namensregelung so definiert: fk_%stable%_%dtable%,
für Spaltennamen so: %table%_%column%. Da seh ich eigentlich keinen grossen Spielraum, wenn man sprechende Namen verwenden will...
Ja und? Kann man doch nach eigenen Kriterien ändern.

Und was die Workbench für MySQL macht, muss für SQLite nicht als Gesetz gelten.

Da Du alle Statements letztlich in den Delphiquelltext übernimmst, kannst Du sie dort nach Deinen Wünschen sinnvoll und lesbar anpassen.

Wenn SQLite die Unmenge von " nicht braucht, dann weg damit.

Habe selten derart schlecht lesbare Scripte gesehen, liegt vielleicht daran, dass ich als "alter Sack" Datenbankscripte noch selbst schreiben musste und mich (als misstrauischer Knilch) nie auf automatisch erstelltes Zeug blind verlassen habe.

Für mich ist wichtig, dass sowohl lesbarer, als auch korrekt funktionierender Quelltext entsteht. Egal welche Quellen und / oder Werkzeuge die Grundlage lieferten.

Was mir erst jetzt auffiel:
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);
Da passt was nicht: Zuerst die Datenbankverbindung beenden, dann ein ExecSQL ausführen? Wo denn, ohne Datenbankverbindung?
FDSQLiteConnection.ExecSQL('ATTACH "M:\SQLite-DB Corner\ContentMasterData\ContentMasterData.sqlite" AS ContentMasterData'); gehört hinter FDSQLiteConnection.Connected := true; aber vor die Createstatements.
  Mit Zitat antworten Zitat