Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQLite DB : Datenbankverbindung klappt nicht (https://www.delphipraxis.net/209206-sqlite-db-datenbankverbindung-klappt-nicht.html)

Delbor 9. Nov 2021 14:46

Datenbank: SQLite • Version: 3 • Zugriff über: FireDac

SQLite DB : Datenbankverbindung klappt nicht
 
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.

Klaus01 9. Nov 2021 14:55

AW: SQLite DB : Datenbankverbindung klappt nicht
 
.. muss die Database nicht offen sein bevor ExecSql ausgeführt wird?

Grüße
Klaus

Delphi.Narium 9. Nov 2021 14:55

AW: SQLite DB : Datenbankverbindung klappt nicht
 
Unterstrich vergessen:
Delphi-Quellcode:
PRAGMA foreign_keys = ON


sqlite pragma foreign

2. Enabling Foreign Key Support

fisipjm 9. Nov 2021 14:56

AW: SQLite DB : Datenbankverbindung klappt nicht
 
Den Befehl schreibt man so:

Delphi-Quellcode:
PRAGMA foreign_keys = ON;
Du hast den underscore vergessen.

Delbor 9. Nov 2021 15:48

AW: SQLite DB : Datenbankverbindung klappt nicht
 
Hi zusammen

Zitat:

Zitat von Klaus01 (Beitrag 1497315)
.. muss die Database nicht offen sein bevor ExecSql ausgeführt wird?

Grüße
Klaus

In der Reihenfolge hatte ich diesen Teil des Codes erstmal: erst die DB öffnen, und dann die Sache mit dem foreign_key...

Vielen Dank auch an fisipjm und Delphi.Narium!

Gruss
Delbor


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz