Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

SQLite DB : Datenbankverbindung klappt nicht

  Alt 9. Nov 2021, 14:46
Datenbank: SQLite • Version: 3 • Zugriff über: FireDac
Hi zusammen

Um es gleich vorwegzunehmen, die Fehlermeldung:
Zitat:
Homeofficerfeproject
[Content]
Fehler beim Aufbau der Datenbankverbindung:

[FireDAC][Phys][SQLite] ERROR: near "foreign": syntax error
Und der Weg dazu:
Ein Treeview zeigt mir den Inhalt meiner Laufwerke an, und hier kann ich den Ort bestimmen, an dem mir eine SQLite-DB erstellt werden soll.
Von hier gelange ich über Rechtsklick/Kontextmenue schliesslich in mein Datenmodul, wobei der Parameter 'DataBaseFolder' den ausgewählten Pfad enthält:
Delphi-Quellcode:
function TDMLSQLiteOfficerFE.CreateAndConnectDatabase(DatabaseFolder: String) : Boolean;
begin
  try
    FDSQLiteConnection.Connected := false;
    FDSQLiteConnection.Params.Clear;
    FDSQLiteConnection.Params.Add('DriverID=SQLite');
    FDSQLiteConnection.Params.Add('Database='+DatabaseFolder); // Add('Database=' + dlgOpen.FileName);
    FDSQLiteConnection.Params.Values['FailIfMissing'] := 'False';

    FDSQLiteConnection.ExecSQL('PRAGMA foreign keys=on'); //<==
    FDSQLiteConnection.Connected := true; // Diese beiden Zeilen habe ich auch schon getauscht
    Result := FDSQLiteConnection.Connected;
    CreateDatabase(DatabaseFolder);
  except
    on E: EDatabaseError do
    begin
      ShowMessage('Fehler beim Aufbau der Datenbankverbindung: ' + #13#13 + E.Message);
      Result := False;
    end;
  end;
end;
Die erste Fehlermeldung, durch Pfeil gekennzeichnet:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt HomeOfficerFEProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: near "foreign": syntax error' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
CreateDatabase schliesslich ruft die Prozeduren zur Erstellung der Tabellen und Inidzes auf.
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat