Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankverbindung klappt nicht die zweite (https://www.delphipraxis.net/209219-datenbankverbindung-klappt-nicht-die-zweite.html)

Delbor 11. Nov 2021 13:42

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

Datenbankverbindung klappt nicht die zweite
 
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

DeddyH 11. Nov 2021 13:52

AW: Datenbankverbindung klappt nicht die zweite
 
Was genau steht denn in DatabaseFolder? Mich verwirrt etwas, dass derselbe Wert für den Datenbanknamen und den Verzeichnisnamen verwendet wird.

Delbor 11. Nov 2021 13:57

AW: Datenbankverbindung klappt nicht die zweite
 
Hi DeddyH

Databasefolder erhält seinen Wert über den Filesearcher und eine Inputbox für den eigentlichen Namen. Der aktuelle Wert ist: M:\HomeOfficerDB.

Gruss
Delbor

DeddyH 11. Nov 2021 14:00

AW: Datenbankverbindung klappt nicht die zweite
 
Da fehlt aber doch der Dateiname.
Delphi-Quellcode:
    FDSQLiteConnection.Params.Values['DriverID'] := 'SQLite';
    FDSQLiteConnection.Params.Values['Database'] := TPath.Combine(DatabaseFolder, 'Delbor.sdb'); // oder welcher Name auch immer
    FDSQLiteConnection.Params.Values['FailIfMissing'] := 'False';

Delbor 11. Nov 2021 14:09

AW: Datenbankverbindung klappt nicht die zweite
 
Hi DeddyH

Vielen Dank! Wusste ich doch: wer lesen kann, ist klar im Vorteil! Das steht so in allen Beispiele, die ich in den letzten Tagen durchforstet habe...

Sagst du mir bescheid, wenn du ein gutes Versteck für mich findest?

Gruss
Delbor


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:17 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