Lazarus & Sqlite verbinden ?

Für Fragen von Einsteigern und Programmieranfängern...
Tango
Beiträge: 48
Registriert: So 29. Aug 2010, 11:13
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Aachen

Lazarus & Sqlite verbinden ?

Beitrag von Tango »

Hallo Community,

Ich versuche seit einige Zeit Lazarus zu lernen bzw. auch Pascal lernen.
Habe Einen Datenbank erstellt, und mit Hilfe von Lazarus wollte ich es unter Tedit ausgeben.

So die erste Hürde war schon bei der Datenbank, Habe verschiedene Test Programme wie Sqlite Maestro, SQLlite Expert Profesional, und Kostenlose SQLlite Administrator heruntergeladen und etwas experimentiert. Datenbank mit dem entsprechende Tabelle(n) erstellt und abgespeichert.

Der eine Programm hat die Endung *.db3 die andere *.s3db und der andere *.db

So welche ist überhaupt Standard Endung ?

Zweites Problem ist, ich habe alle Drei Datenbanken mit verschiedene Endungen ausprobiert, es will nicht verbinden :( Es kommt immer eine SQLite client library Sqlite3.dll Fehler)

Übrigens habe auch ohne die Endungen ein zu tippen versucht, hat auch nichts gebracht.

Könnte jemand mir das mal erklären wie ich es vorgehen soll, und welche Komponenten ich brauche ?

Bild

Bild

Mit freundlichen Grüßen
Tango

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Lazarus & Sqlite verbinden ?

Beitrag von corpsman »

Also wenn ich deinen 1. Screenshot richtig lese hast du die DLL noch nicht runter geladen.

Diese muss ebenfalls vorhanden sein. Unter Windows dürfte es reichen, wenn du sie einfach nur in das Verzeichnis der Applikation kopierst ...
--
Just try it

Tango
Beiträge: 48
Registriert: So 29. Aug 2010, 11:13
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Aachen

Re: Lazarus & Sqlite verbinden ?

Beitrag von Tango »

Ja Danke das mit DLL hat sich erledigt, trotz dem kann ich nicht Tedit die einzelne Datensätze zuordnen :(

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: Lazarus & Sqlite verbinden ?

Beitrag von MmVisual »

Der Ansatz ist komplett falsch. Ich versuche es mal zu beschreiben wie es richtig geht.

1. Laden der Komponente "Zeos-DBO" von http://zeos.firmos.at/portal.php" onclick="window.open(this.href);return false; die Version V6.6.6 stable
2. Entpacken der Datei nach C:\lazarus\components\ZeosDBO (Verz. ZeosDBO anlegen)
3. Mit Lazarus installieren und Lazarus neu kompillieren. Package > Package-Datei (.lpk) öffnen...
3.a Datei "C:\lazarus\components\ZeosDBO\packages\lazarus\zcomponent.lpk" auswählen
3.b Installieren

Nach dem Neustart von Laraus (dauert ein wenig) gibt es in der Komponentenleiste neu "Zeos Access"

4. TZConnection auf dem Formular plazieren
4.a Protocol = sqlite-3
4.b Database = <Deine Datei>
4.c Test: Connected auf TRUE setzen, kein Fehler, dann kann die Datenbank angesprochen werden

5. TZQuery auf dem Formular plazieren
5.a Connection = ZConnection1
5.b SQL = 'SELECT * FROM <DeinTabellenname>'
5.c Test: Active auf TRUE setzen, kein Fehler, Tabelle lässt sich öffnen

6. TDatasource auf dem Formular plazieren (gibts unter Data Access)
6.a Dataset = ZQuery1

7. TDBEdit auf dem Formular plazieren (gibts unter Data Controls)
7.a Datasource = Datasource1
7.b Datafield = <DeinFeld>

8. Dann ein Button mit "Neu" Code: ZQuery1.Append;
9. Dann ein Button mit "Speichern" Code: ZQuery1.Post;
10. Dann ein Button mit "Löschen" Code: ZQuery1.Delete;

Das wars mal grob.

11. TDBGrid auf dem Formular plazieren (gibts unter Data Controls)
11.a Datasource = Datasource1
EleLa - Elektronik Lagerverwaltung - www.elela.de

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Lazarus & Sqlite verbinden ?

Beitrag von Bauer321 »

habs gerade ausprobiert aber bekomme nen fehler:

Code: Alles auswählen

C:\lazarus\components\ZEOSDBO-6.6.6-stable\src\core\ZClasses.pas(84,22) Error: No matching implementation for interface method "IUnknown.QueryInterface(constref TGuid,out <Formal type>):LongInt; StdCall;" found
www.mcpatcher.net | www.hoeper.me

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: Lazarus & Sqlite verbinden ?

Beitrag von MmVisual »

Bei mir geht das ohne Probleme, vielleicht mal Lazarus beenden und neu starten?
Vielleicht mal zu erst Lazarus neu kompillieren, geht unter Menü "Werkzeug" und dann erst die Zeos Komponente installieren.

Ich installiere bei mir immer die aktuellste Lazarus-Version, die es hier hibt: http://www.hu.freepascal.org/lazarus/" onclick="window.open(this.href);return false;
EleLa - Elektronik Lagerverwaltung - www.elela.de

am2
Lazarusforum e. V.
Beiträge: 116
Registriert: Di 21. Dez 2010, 09:59
OS, Lazarus, FPC: Win (L 0.9.26 beta FPC 2.2.2)
CPU-Target: 32 Bit

Re: Lazarus & Sqlite verbinden ?

Beitrag von am2 »

Warum muß ich die IDE neu kompilieren, wenn ich eine weitere DB benutzen möchte? (Ist keine Provokation, ich möchte es nur verstehen)
Gibt es unter Lazarus nicht die Möglichkeit, eine fremde Komponente einzubinden, ohne den Lazarus neu zu erzeugen? Ich hatte bislang noch nie den Drang, fremde Programme, die ich benutzen wollte, selbst zu compilieren. Wenn es sich vermeiden ließe, dann würde ich das gern tun ...

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: Lazarus & Sqlite verbinden ?

Beitrag von MmVisual »

Um eine neue Komponente ein zu binden muss Lazarus neu kompiliert werden. Ist so und wird auch immer so sein.

Aber warum es machmal nicht geht, wenn man nicht vorher extra unter "Werkzeug" Lazarus neu kompiliert und man erst danach eine Komponente installieren kann, verstehe ich auch nicht.

Ich selbst bin auch kein Freund von vielen extra Komponenten, vor allen, wer garantiert dass die Komponenten weiter gepflegt werden für neuere Entwicklungsumgebungen?

Aber die ZEOS Datenbankkomponente ist so gut und effizient, daher nutze ich diese. (Ist auch die einzige die ich eingebunden habe)
Und mit der Zeos kann ich durch einfaches Umparametrieren SQLite, MySQL und PostgreSQL Datenbanken nutzen, damit bin wiederum flexibler und nagel mich nicht auf einer Datenbank fest (die aus irgend welchen Gründen auch sterben oder nicht mehr freeware sein könnte).
EleLa - Elektronik Lagerverwaltung - www.elela.de

Tango
Beiträge: 48
Registriert: So 29. Aug 2010, 11:13
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Aachen

Re: Lazarus & Sqlite verbinden ?

Beitrag von Tango »

MmVisual hat geschrieben:Der Ansatz ist komplett falsch. Ich versuche es mal zu beschreiben wie es richtig geht.

1. Laden der Komponente "Zeos-DBO" von http://zeos.firmos.at/portal.php" onclick="window.open(this.href);return false; die Version V6.6.6 stable
2. Entpacken der Datei nach C:\lazarus\components\ZeosDBO (Verz. ZeosDBO anlegen)
3. Mit Lazarus installieren und Lazarus neu kompillieren. Package > Package-Datei (.lpk) öffnen...
3.a Datei "C:\lazarus\components\ZeosDBO\packages\lazarus\zcomponent.lpk" auswählen
3.b Installieren

Nach dem Neustart von Laraus (dauert ein wenig) gibt es in der Komponentenleiste neu "Zeos Access"

4. TZConnection auf dem Formular plazieren
4.a Protocol = sqlite-3
4.b Database = <Deine Datei>
4.c Test: Connected auf TRUE setzen, kein Fehler, dann kann die Datenbank angesprochen werden

5. TZQuery auf dem Formular plazieren
5.a Connection = ZConnection1
5.b SQL = 'SELECT * FROM <DeinTabellenname>'
5.c Test: Active auf TRUE setzen, kein Fehler, Tabelle lässt sich öffnen

6. TDatasource auf dem Formular plazieren (gibts unter Data Access)
6.a Dataset = ZQuery1

7. TDBEdit auf dem Formular plazieren (gibts unter Data Controls)
7.a Datasource = Datasource1
7.b Datafield = <DeinFeld>

8. Dann ein Button mit "Neu" Code: ZQuery1.Append;
9. Dann ein Button mit "Speichern" Code: ZQuery1.Post;
10. Dann ein Button mit "Löschen" Code: ZQuery1.Delete;

Das wars mal grob.

11. TDBGrid auf dem Formular plazieren (gibts unter Data Controls)
11.a Datasource = Datasource1
Danke für die Ausführliche Erklärung, Es will nicht mit dem Datenbank sich verbinden :(
Mit welchem Tool erstellst du den deine Datenbank ? und vor allem welche Endung hat es ?

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: Lazarus & Sqlite verbinden ?

Beitrag von MmVisual »

Die Datenbankdatei kann irgend ein beliebigen Name haben, auch die Endung ist egal. Es ist nur wichtig dass die TZConnection den Dateiname kennt (mit Endung).

Zur Administration gibt es einige Tools im Internet wie, z.B. "sqlite3Explorer.exe". google hilft.

Du kannst hier eine Datenbank mit Daten drin laden:
http://www.mmvisual.de" onclick="window.open(this.href);return false; >> EleLa
Eine Lagerverwaltung, erstellt mit Lazarus, nach dem Setup gibt es die Datei EleLa.sq3, das ist die SQLite Datenbank.
Drin ist die Tabelle z.B. "adr" für die Adressverwaltung.

Ansonsten eine Datenbank samt Tabelle mit dem Code erstellen:

Code: Alles auswählen

q.SQL.Clear;
  q.SQL.Add('CREATE TABLE IF NOT EXISTS adr (');
  q.SQL.Add('ID INTEGER NOT NULL PRIMARY KEY,');
  q.SQL.Add('Bezeichnung VARCHAR(50),');
  q.SQL.Add('Strasse VARCHAR(50),');
  q.SQL.Add('PLZ VARCHAR(15),');
  q.SQL.Add('Ort VARCHAR(50),');
  q.SQL.Add('Land VARCHAR(50),');
  q.SQL.Add('Name VARCHAR(50),');
  q.SQL.Add('AendDatum DATETIME');
  q.SQL.Add(');');
  q.ExecSQL;
(q ist meine Query vom Typ TZQuery.)
Das ExecSQL führt den SQL Script aus. Wenn die Datenbankdatei nicht existiert, dann legt SQLite automatisch eine neue an und macht diese Tabelle rein. Ganz von alleine, ohne extra Befehl "JetztMacheEineNeueDatenbankDatei", den gibt es nicht.

Diesem Code kannst Du im FormCreate rein nehmen, dann tut der beim starten automatisch eine Datenbank anlegen und überprüfen/automatisch die existenz der Tabelle adr.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Tango
Beiträge: 48
Registriert: So 29. Aug 2010, 11:13
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Aachen

Re: Lazarus & Sqlite verbinden ?

Beitrag von Tango »

Hat leider auch nicht geklappt :(

Bild

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: Lazarus & Sqlite verbinden ?

Beitrag von MmVisual »

Die Date "SQLite3.dll" ist im gleichen Verzeichnis wie das Projekt?

Lazarus beenden.
Datei-Explorer starten.
In das Verzeichnis von Deinem Projekt wechseln.
Die Datei "project1.lpi" mit Doppelklick drauf öffnen, dann kommt wieder Lazarus

Dann sollte es gehen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Tango
Beiträge: 48
Registriert: So 29. Aug 2010, 11:13
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Aachen

Re: Lazarus & Sqlite verbinden ?

Beitrag von Tango »

nein hat nichts gebracht :( ja dll Datei habe ich sogar von deinem Projekt die übernommen und ausprobiert.

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Lazarus & Sqlite verbinden ?

Beitrag von Bauer321 »

MmVisual hat geschrieben:Bei mir geht das ohne Probleme, vielleicht mal Lazarus beenden und neu starten?
Vielleicht mal zu erst Lazarus neu kompillieren, geht unter Menü "Werkzeug" und dann erst die Zeos Komponente installieren.

Ich installiere bei mir immer die aktuellste Lazarus-Version, die es hier hibt: http://www.hu.freepascal.org/lazarus/" onclick="window.open(this.href);return false;
ne also geht leider nicht... neuste laz version werd ich morgen ma austesten hab aber schon ne relativ neue
www.mcpatcher.net | www.hoeper.me

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: Lazarus & Sqlite verbinden ?

Beitrag von MmVisual »

@Tango
Zippe mal dein Projekt (ohne die EXE, ohne Dll) und poste das mal.

@Bauer321
>> neuste laz version werd ich morgen ma austesten hab aber schon ne relativ neue
Wenn die nicht älter ist als 1/2 Jahr sollte es funzen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten