Einzelnen Beitrag anzeigen

Delbor

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

Datenbankverbindung klappt nicht die zweite

  Alt 11. Nov 2021, 14:42
Datenbank: SQLite • Version: 3.xxx • Zugriff über: FireDac
Hi zusammen

Auch hier wieder mal erst die Fehlermeldung:

---------------------------
Im Projekt HomeOfficerFEProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: unable to open database file' aufgetreten.
---------------------------

Über einen Kontextmenü-Punkt mit Inputbox zur Eingabe eines DB-Namens lande ich schliesslich hier:

Delphi-Quellcode:
function TDMLSQLiteOfficerFE.CreateAndConnectDatabase(DatabaseFolder: String) : Boolean;
begin
  try
    TDirectory.CreateDirectory(DatabaseFolder);
    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.Connected := true; //<==

    FDSQLiteConnection.ExecSQL('PRAGMA foreign_keys=on');
    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;
Hier wird als erste ein Ordner für die DB am Pfad Databasefolder angelegt. Dann wird Databasefolder, das den kompletten DB-Pfad enthält, an den Parameter 'Database' zugewiesen - soviel, wie ich verstanden habe, läuft das genau so ab, wie es sein sollte. Nur führt der Versuch, die Verbindung herzustellen, zu obiger Fehlermeldung. Was mache ich falsch?

Ach ja: CreateDatabase ruft nacheinander die Prozeduren zum Festlegen der SQL-Strings / Erstellen von Tabellen und Indizes auf.


Gruss
Delbor
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