Ich schon wieder... diesmal SQlite

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

Ich schon wieder... diesmal SQlite

Beitragvon Midykm » 2. Nov 2017, 21:40 Ich schon wieder... diesmal SQlite

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.
Midykm
 
Beiträge: 7
Registriert: 31. Okt 2017, 21:59

Beitragvon af0815 » 2. Nov 2017, 22:16 Re: Ich schon wieder... diesmal SQlite

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).
af0815
 
Beiträge: 3327
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon wp_xyz » 2. Nov 2017, 22:57 Re: Ich schon wieder... diesmal SQlite

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.
wp_xyz
 
Beiträge: 2397
Registriert: 8. Apr 2011, 08:01

Beitragvon gladio » 3. Nov 2017, 07:22 Re: Ich schon wieder... diesmal SQlite

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.
gladio
 
Beiträge: 89
Registriert: 21. Jun 2014, 05:15
Wohnort: Insel Rügen
OS, Lazarus, FPC: Win7/10-32/64 - Laz 1.8 Standard-Edition | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Midykm » 3. Nov 2017, 20:39 Re: Ich schon wieder... diesmal SQlite

OK, danke - das hilft mir weiter!
Midykm
 
Beiträge: 7
Registriert: 31. Okt 2017, 21:59

Beitragvon af0815 » 4. Nov 2017, 08:33 Re: Ich schon wieder... diesmal SQlite

... Wenn du den letzten Satz beachtest.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3327
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron
porpoises-institution
accuracy-worried