Erste Schritte mit Zeos und SQLite3: "SQL Error"

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
markusd112
Beiträge: 24
Registriert: Do 30. Aug 2012, 16:57

Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von markusd112 »

Hallo,

ich versuche mich gerade in Zeos einzuarbeiten, um eine SQLite3-Datenbank zu verwenden.

Dabei gehe ich, wie im Tutorial (http://wiki.lazarus.freepascal.org/Zeos ... _Anwendung) beschrieben vor:

1) Einfügen einer TZConnection
2) Setzen von Protocol auf "sqlite-3"
3) Setzen von Database auf meine sqlite-Datenbankdatei

Wenn ich nun, wie im Tutorial beschrieben, die Eigenschaft "Connected" auf True setze, so poppt sofort eine Fehlermeldung hoch: "SQL Error: library routine called out of sequence".

Mache ich irgendwas falsch?!

Gruß

Markus

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von theo »

markusd112 hat geschrieben: Mache ich irgendwas falsch?!
Keine Ahnung.
Aber Googeln könntest du bestimmt mal: http://lmgtfy.com/?q=SQL+Error%3A+libra ... f+sequence" onclick="window.open(this.href);return false;

markusd112
Beiträge: 24
Registriert: Do 30. Aug 2012, 16:57

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von markusd112 »

Das habe ich schon intensiv getan, aber leider keine Lösung gefunden. Deshalb ein Versuch hier....

Gruß

Markus

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von MmVisual »

Die SQLite DLL muss im gleichen Verzeichnis der EXE oder in einem der Suchpfade drin stehen (C:\Windows\System32).
Diese DLL muss von SQLite.org geladen werden.
Bei Linux sollte die passende .so Datei schon vorhanden sein.
EleLa - Elektronik Lagerverwaltung - www.elela.de

markusd112
Beiträge: 24
Registriert: Do 30. Aug 2012, 16:57

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von markusd112 »

Hallo,
Danke für den Tipp. Da werde ich nochmal nachsehen, wobei ich Mac OS X verwende, so dass es genauso wie bei Linux sein sollte...
Gruß
Markus

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von MmVisual »

Du solltest auch das aktuelle Zeos aus dem SVN nehmen und nicht die V6.6.6
Da gibt es noch einen Parameter "LibraryLocation" im TZConnection und man kann somit den Pfad/Dateiname der DLL angeben.

Hier die Infos:
http://www.lazarusforum.de/viewtopic.ph ... 706#p53706" onclick="window.open(this.href);return false;
EleLa - Elektronik Lagerverwaltung - www.elela.de

markusd112
Beiträge: 24
Registriert: Do 30. Aug 2012, 16:57

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von markusd112 »

Hallo,

so, konnte jetzt nochmal alles prüfen: ich hatte bereits per svn eine aktuelle Version aus dem Repository heruntergeladen und verwende bereits die Version 7.0 von Zeos, daran kann es also nicht liegen.

In der Eigenschaft "LibraryLocation" habe ich jetzt auch nochmal händisch den Pfad zur .so-Datei hinterlegt. Das Problem tritt aber trotzdem weiterhin auf: sobald ich im Object-Inspector die Option "Connected" auf True setze, kommt die genannte Fehlermeldung.

Es ist zum Haare raufen...

Gruß

Markus

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von MmVisual »

Hat die .so die gleiche Bit-Anzahl wie (32/64) wie das installierte Lazarus?
EleLa - Elektronik Lagerverwaltung - www.elela.de

markusd112
Beiträge: 24
Registriert: Do 30. Aug 2012, 16:57

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von markusd112 »

Hallo,

die .so liefert mit file:

Code: Alles auswählen

sqlite-3.3.8.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
file auf lazarus liefert:

Code: Alles auswählen

lazarus: Mach-O executable i386
Daran scheint es nicht zu liegen...

Gruß

Markus

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von MmVisual »

Schreibe mal bei
TZConnection.HostName := 'DummyHost';
rein.
EleLa - Elektronik Lagerverwaltung - www.elela.de

markusd112
Beiträge: 24
Registriert: Do 30. Aug 2012, 16:57

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von markusd112 »

Bingo!! Das war's: ich habe als Hostname "localhost" eingetragen und jetzt geht's!

Danke für den Tipp! Ich werde das im Wiki in dem Tutorial noch als Hinweis ergänzen.

Tausend Dank für die Hilfe!!!

Viele Grüße

Markus

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von MmVisual »

Ist noch ein Bug Zeos.

Intern werden bei Zeos die einzelnen Parameter einer Datenbankverbindung (weil es gib viele) mit "/" getrennt. Unglücklicherweise verwendet zufällig Linux ebenfalls ein "/" als Pfadtrenner. Somit wurde Dein erstes "/" als Hostname interpretiert und alles danach als Datenbankpfad/Datei und der konnte somit die DB nicht mehr finden. :roll:
Es ist somit egal was als Hostname drin steht, denn SQLite braucht das nicht. Nur wichtig, dass mindestens ein Buchstabe angegeben wurde.

Das zu ändern ist in Zeos ein größerer Aufwand, da alle DB Treiber entsprechend geändert werden müssen. Der Bug ist den Zeos-Entwicklern seit ein paar Wochen erst bekannt, der betrifft nur Linux.
EleLa - Elektronik Lagerverwaltung - www.elela.de

markusd112
Beiträge: 24
Registriert: Do 30. Aug 2012, 16:57

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von markusd112 »

Hallo,

alles klar, Danke für die Erklärung und die Hilfe, jetzt klappt es. Im Wiki habe ich einen Hinweis ergänzt, damit andere DAUs wie ich nicht erneut darüber stolpern. :idea:

Ich habe schon an mir gezweifelt, da ja zumindest so grundlegende Dinge, die in einem Einsteiger Tutorial beschrieben sind, ohne größere Probleme laufen sollten. Und wenn dann noch so "hilfreiche" Beiträge von anderen hier kommen, ich könnte doch mal googlen, kommen Zweifel, scheint aber mehr ein Standard-Abwehr-Reflex hier im Forum zu sein, vermutlich weil viele erstmal Posten, anstatt selbst zu suchen :wink:

Aber nochmal ein paar andere Fragen zu Zeos:

- mir ist aufgefallen, dass in dem Lib-Verzeichnis von Zeos nur für sqlite3 entsprechende .so-Bibliotheken dabei sind. Bei z.B. MySQL5 sind nur .dll-Dateien dabei (wahrscheinlich für Windows). Sind diese .dll-Libs auch unter Linux/Mac OSX nutzbar?

- kann ich irgendwie feststellen, welche Lib er einbindet und wo er sie gefunden hat?

- wo kommen diese Bibliotheken eigentlich her? So wie ich es sehe, werden sie nicht beim Bauen von ZComponents mitcompiliert, sondern stehen als fertige Binaries im Repository. Wenn ich sie mir selber kompilieren möchte, wie mache ich das?

- ich vermisse eine Doku von Zeos. Es gibt zwar einige mehr oder minder umfangreiche Tutorials, aber eine richtige Doku scheint es nicht zu geben? Auf der Homepage des Projektes und auf SF konnte ich zumindest bisher nichts finden... Oder bin ich blind und brauche doch mal eine Nachhilfe im Googlen? ;-)

- ich hatte versucht, mich im offiziellen Zeos-Forum zu registrieren (http://zeos.firmos.at" onclick="window.open(this.href);return false;), aber trotz mehrfacher Versuche bekomme ich keinen Bestätigungslink zugeschickt... Haben die evtl. ein technisches Problem? Ich denke, gerade die speziellen Zeos-Themen sind dort besser aufgehoben als hier im Forum..

Besten Dank und viele Grüße

Markus

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von MmVisual »

1) Die Zeos LIB Order dienen nur zur Entwicklung von Zeos. Die jeweilige .so Datei sollte z.B. mit "apt-get -install libmysqlclient" oder so ähnlich vom Linux-Distri installiert werden. Damit landen die automatisch unter /usr/lib oder /usr/lib64

2) Bei Linux gibt es Suchpfade und da sucht Zeos automatisch (/usr/lib), bzw. der Befehl "LoadLibrary" macht das. Wenn man ich nicht sicher ist muss man LibraryLocation manuell setzen. Unter Linux haben die Libraries meist irgendwelche zusätze wie z.b. "libmysql.so.18" und dann bei solchen Zusätzen findet das Zeos natürlich nicht mehr.
Im TZConnection.BeforeConnect Event kann man das ausrechnen und die LibraryLocation noch kurz vor dem Öffnen der DB setzen

3) Die Bibliotheken kommen von den jeweiligen Herstellern, wie z.B. http://www.sqlite.org" onclick="window.open(this.href);return false;

4) So ist es leider meist bei Freeware, Doku = Mangelware. Wenn jemand dafür was zahlen würde, dann würde es sich auch einer für eine Doku finden. Das letzte halbe Jahr haben sich fähige Leute hin gesetzt und Zeos auf einen wirklich guten Stand gebracht. Ich bin froh so eine gute Komponente zu bekommen, das auch noch kostenlos und da muss ich als Doku den Quellcode her nehmen. Wenn jemand eine gute Kompo mit Doku sucht, dann ist das kommerziell und kostet richtig viel Geld (und ist warscheinlich nicht so leistungsfähig wie die Zeos Kompo).

5) Weiß nicht.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Erste Schritte mit Zeos und SQLite3: "SQL Error"

Beitrag von MmVisual »

PS: Als Doku kann man auch eine der viele anderen Tutorials über die DB Programmierung nehmen. Bei Zeos gibt es nur ein paar Dinge mehr, bzw. manches ist etwas einfacher, aber im Grunde sind alle gleich.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten