Ich schon wieder... diesmal SQlite

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Midykm
Beiträge: 10
Registriert: Di 31. Okt 2017, 21:59

Ich schon wieder... diesmal SQlite

Beitrag von Midykm »

Hallo,

sorry, wenn ich schon wieder nerve.
Nach meinen wenig erfolgreichen Ausflügen in die dBase-Welt, habe ich mich auf SQlite(3) besonnen. Damit habe ich bereits gearbeitet und erfolgreich (sic!) ein Datenbank erstellt. In Lazarus gibt es ja auch Unterstützung für SQlite (http://wiki.freepascal.org/SQLite#How_T ... c_Usage.29).
Dem Leitfaden zur Installation bin ich gefolgt (http://wiki.freepascal.org/Install_Packages) und habe letzlich meine Lazarus-Installation zerschossen :(
Installation und Rebuild klappten, aber nach dem Neustart von Lazarus gibt's nur noch die Fehlermeldung "...SQlite3.dll kann nicht gefunden werden..." und Ende.
Kein Wort von der DLL in der Installationsanleitung oder ich hab's überlesen; jedenfalls naiverweise angenommen, diese wird nur zur Ausführungszeit benötigt.
WO ZU HENKER ERWARTET LAZARUS DENN sqlite3.dll ?
Ich habe sie mal nach ...\components\sqlite kopiert - ohne positive Auswirkung.
Na ja, ich werde jetzt mal Lazarus neu installieren.

Vielen Dank für die Geduld und einen schönen Abend noch.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Ich schon wieder... diesmal SQlite

Beitrag von af0815 »

Ganz einfach, die richtige !!! sqlite.dll im verzeichnis der Lazarus.exe FÜR DIE DESIGNZEIT ! Dann die sqlite.dll im Verzeichnis des exe des Projektes.

Achtung es gibt 32bit und 64bit dll. Je nachdem muss man die richtige nehmen. dll natürlich nur wenn man unter WIndows ist.

Andreas

BTW. Lazarus legt immer eine Kopie von sich an, die kann man notfalls (ohne sqlite) starten um was zu reparieren.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: Ich schon wieder... diesmal SQlite

Beitrag von wp_xyz »

Welche Komponente hast du denn installiert? TSQLite3Dataset? Würde ich nicht nehmen. Wenn mich jetzt die Erinnerung nicht täuscht, dann bindet diese Komponente die DLL so ein, dass Lazarus gar nicht startet, wenn die DLL nicht gefunden wird. Besser geeignet ist das Package SQLDBLaz, bei dem die DLL zum Start nicht benötigt wird. Das Package ist m.E. schon von Haus aus installiert. Ansonsten erhältst du es unter "Package" > "Installierte Packages einrichten" > in der rechten Liste suchen > "Auswahl installieren" > "Speichern und IDE rekompilieren". Dieses Package ist in dem von dir zitierten wiki-Artikel weiter oben beschrieben.

Etwas ausführlicher als af0815 geschrieben hat:
Wenn nach dem Installieren eines Package Lazarus nicht mehr startet, dann lösche die erzeugte lazarus.exe und benenne lazarus.old.exe in lazarus.exe um - diese Datei wurde vor dem Neukompilieren der IDE so gesichert. Dieser Lazarus sollte wieder funktionieren. Dann das fehlerhafte Package in dem schon erwähnten Dialog in der linken Liste anklicken, "deinstallieren" und dann die IDE nochmals neu übersetzen - nun solltest du wieder den Zustand vor der verunglückten Installation haben.

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Ich schon wieder... diesmal SQlite

Beitrag von gladio »

Welche DLL du für deine Anwendung benötigst hängt von deiner Zielplattform ab.
Für eine 32-Bit-Anwendung die 32-Bit-DLL ins EXE-Verzeichnis ... usw.
Leider unterscheinden sich 32- und 64-Bit-DLL nicht im Namen, so daß man nicht beide ins EXE-Verzeichnis geben kann.
ich hab das mal so gelöst:
Die jeweilige DLL liegt in einem separaten Unterverzeichnis ..\32\sqlite3.dll oder \64\sqlite3.dll

Code: Alles auswählen

 
function TDMForm.GetTargetInfo: string;
begin
  result := {$I %FPCTARGETCPU%};
end;
 
procedure TDMForm.FormCreate(Sender: TObject);
begin
  ....
 
  if GetTargetInfo = 'i386' then
      ZConnection2.LibraryLocation:=(ExtractFilePath(Application.ExeName)+'32\sqlite3.dll')
  else
     ZConnection2.LibraryLocation:=(ExtractFilePath(Application.ExeName)+'64\sqlite3.dll');
  end;
 

Ähm, und ich verwende Zeos.

Midykm
Beiträge: 10
Registriert: Di 31. Okt 2017, 21:59

Re: Ich schon wieder... diesmal SQlite

Beitrag von Midykm »

OK, danke - das hilft mir weiter!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Ich schon wieder... diesmal SQlite

Beitrag von af0815 »

... Wenn du den letzten Satz beachtest.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten