Sql Query und Dbf

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Sql Query und Dbf

Beitrag von MmVisual »

Mit Zeos geht das so:

- TZConnection: Für Datenbankverbindung, Auswahl Protocol, Host, Port, User, Password, usw.
- TZQuery / TZTable: Connection setzen, SQL reinschreiben (Wenn man komplexe Abfragen in einer Query hat (JOINs) und man Datensätze editieren möchte, so wird noch ein TZUpdateSQL benötigt).
- TDatasource, wie in Delphi
- TDBEdit, TDBGrid, ...

So ein Hexenwerk ist das doch auch nun wirklich nicht und geht gleich wie bei anderen Komponenten auch.

Übrigens, die Zeos Komponente kann man auch in Delphi installieren/nutzen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Re: Sql Query und Dbf

Beitrag von Jochim »

also habe es jetzt soweit hinbekommen, doch obwohl ich den Pfad der SQlite3.dll Datei in LibaryLocation angegeben habe und auch auf mehreren Standorten probiert habe, wird folgende Meldung angegeben: None of the dynamic libaries can be found or is not loadable. Ich habe schon danach gegoogelt doch ich konnte keinen Fehler bei der Reihenfolge finden. Hatte schon jemand dieses Problem?
TZConnection: Für Datenbankverbindung, Auswahl Protocol, Host, Port, User, Password, usw.
Protocol:=sqlite-3
HostName: localhost
Port:=1 --> liegt dort vielleicht der Fehler?
User: Jochim
Passwort: passwort
LibaryLocation: L:\Info\Lazarus\Datenbanken\erste arbeit zeos\sqlite3.dll --> auch schon probiert mit: C:\Windows\system\sqlite3.dll und C:\Windows\system32\sqlite3.dll doch nichts hat funktioniert.

Und ne so schwer ist es auch nicht denke doch ich habe noch einen Wurm drinne. Außerdem habe ich mir die Reihenfolge des erstellen schon paar mal angeguckt und meine überprüft.

Jochim

PS: Habe aber leider kein Delphi.

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Sql Query und Dbf

Beitrag von hde »

Jochim hat geschrieben:TZConnection: Für Datenbankverbindung, Auswahl Protocol, Host, Port, User, Password, usw.
bei SQLite reicht schon das Protokoll, der Rest wird mehr oder weniger ignoriert.
aber die DLL muss die gleiche Bitbreite haben, check mal 32/64bit
hde

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

Re: Sql Query und Dbf

Beitrag von MmVisual »

Hier gibt es die 64-Bit SQLite DLL. Ist zwar nicht ganz aktuell, aber relativ neu und funktioniert gut:
http://sourceforge.net/p/zeoslib/code-0 ... ite/Win64/

Die 32-Bit SQLite DLL kann aktuell immer von http://www.sqlite.org geladen werden.

In der TZConnection wird als "Database" bei SQLite die Datenbankdatei angegeben. Wenn die Datei nicht existiert so wird SQLite die automatisch anlegen.
Mit einer TZQuery kann ein SQL Befehl "CREATE TABLE IF NOT EXISTS <Name> ([Spaltendeklarationen])" und dann .Execute eine neue Tabelle in der Datenbankdatei erzeugt werden.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Soner
Beiträge: 725
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Sql Query und Dbf

Beitrag von Soner »

Ich glaube dein Problem ist wie mein Vorredner geschreiben haben falsche DLL version. Lösche alle DLL"s und packe in Windows\System32-Ordner 32Bit-Version von Sqlite.dll und 64Bit-Version in Systemordner für 64Bit DLL"s. Oder kopiere passende DLL in dein Programm-Ordner.
Für Sqlite muss man bei TZConnection nur folgende Eigenschaften angeben, alles andere ist Optional oder wird nicht Verwendet. Ich würde auch erst nur diese benutzen umzu testen ob alles funktioniert:

Code: Alles auswählen

 
TZConnection.Protocol:='sqlite-3';
TZConnection.Databasename:='X:\DeinOrdner\DeinSqlite.db';
 
//und natürlich TZConnection.Connected-Eigenschaft umzu verbinden.
 
Versuche auch erstmal schon vorhandene Datenbank zu verbinden umzu testen ob alles funktioniert.

Datenbanken kann man mit diesen Programmen erstellen:
http://reddog.s35.xrea.com/wiki/TkSQLite.html : Einfach zu Benutzen
http://www.dbsoftlab.com/database-browser/overview.html: Umfangreich

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

Re: Sql Query und Dbf

Beitrag von MmVisual »

Soner hat geschrieben:Versuche auch erstmal schon vorhandene Datenbank zu verbinden umzu testen ob alles funktioniert.
Ist nicht nötig, man kann auch eine Verbindung auf eine nicht existierende Datei herstellen:

TZConnection.Protocol:='sqlite-3';
TZConnection.Database:='C:\DateiDieEsNichtGibt.sq3';
TZConnection.Connect;

Wenn dann kein Fehler kommt, stimmt die DLL Version (32/64 Bit) und ZEOS findet auch die DLL. Dann funktionieren auch die SQL Befehle mit TZQuery.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Re: Sql Query und Dbf

Beitrag von Jochim »

MmVisual hat geschrieben:
Soner hat geschrieben:Wenn dann kein Fehler kommt, stimmt die DLL Version (32/64 Bit) und ZEOS findet auch die DLL. Dann funktionieren auch die SQL Befehle mit TZQuery.
Nun bin ich schon mal ein Schritt weiter bei der TZQuery angekommen. Ich verwende folgendes Tutorial: http://wiki.freepascal.org/Zeos_tutorial/de (Erstellen Ihrer Zeos anwendung)
Doch beim Active setzen der TZquery kommt die Meldung: SQL error: SQL logic error or missing database.

Ich habe nun die Vermutung, dass es daran liegt das ich keine database vorher erstellt habe doch in der TZConnection.Database steht: K:\Info\Lazarus\Datenbenkprogrammiereung\Zeos\MyTable.sq3.

Danke für eure hilfe. Jochim.

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Sql Query und Dbf

Beitrag von hde »

Was hast du denn in der TZQuery unter SQL eingetragen?
hde

Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Re: Sql Query und Dbf

Beitrag von Jochim »

hde hat geschrieben:Was hast du denn in der TZQuery unter SQL eingetragen?
Ich habe dort eingetragen: SELECT * FROM MyTabel

Und meine db heißt ja auch MyTabel. Muss dort überhaupt schon etwas eingetragen seit?

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

Re: Sql Query und Dbf

Beitrag von MmVisual »

Nur weil die DB MyTable heißt, gibt es darin noch lange keine Tabelle die MyTable heißt. Bei SQLite kann in einer einzigen DB Datei viele Tabellen existieren.
Somit: Erst mal eine Tabelle mit der "CREATE TABLE" Syntax anlegen.

TZQuery.SQL.Text := '.....';
Ausgeführt wird der Befehl dann mit TZQuery.ExecSQL;
EleLa - Elektronik Lagerverwaltung - www.elela.de

Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Re: Sql Query und Dbf

Beitrag von Jochim »

MmVisual hat geschrieben:Erst mal eine Tabelle mit der "CREATE TABLE" Syntax anlegen.

TZQuery.SQL.Text := '.....';
Ausgeführt wird der Befehl dann mit TZQuery.ExecSQL;
Ich habe nun die Table mit:

Code: Alles auswählen

CREATE TABLE IF NOT EXISTS product (
      id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
      producer TEXT NOT NULL,
      name TEXT NOT NULL,
      category TEXT NOT NULL,
      wohnort TEXT NOT NULL,
      size INTEGER NOT NULL);
 
angelegt. Doch beim Active setzen der ZQuery hängt sich das programm auf.

Jochim

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

Re: Sql Query und Dbf

Beitrag von MmVisual »

Poste doch mal deinen Quellcode + deine SQLite Datenbankdatei.
EleLa - Elektronik Lagerverwaltung - www.elela.de

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Sql Query und Dbf

Beitrag von hde »

mal generell:
eine TZQuery ist, wie der Name schon sagt, für Abfragen, also select's da.
für andere Aufgaben nimmt man ExecuteSQl

Jochim
Beiträge: 32
Registriert: Mi 20. Mär 2013, 13:44
OS, Lazarus, FPC: Win7 HP x64
CPU-Target: Bit

Re: Sql Query und Dbf

Beitrag von Jochim »

hde hat geschrieben:mal generell:
eine TZQuery ist, wie der Name schon sagt, für Abfragen, also select's da.
Das war doch meine aller erste Frage. Also jetzt noch mal für blöde, wie mich, um das thema so langsam mal abzuschließen:
  • 1. ZConnection auf Form setzen
    2.Database eintragen
    3.LibaryLocation eintragen
    4.Protocol auf sqlite-3 ändern
    5.Connected auf True setzen
    6.Zquery auf Form setzen
    7.Zconnection bei connection eintragen
    8.Datasource auf form setzen und bei ZQuery.DataSource eintragen
    9.DB erzeugen --> wie erzeuge ich dann, mit welcher Komponente oder Kode die DB?
    10.Zquery Active setzen
    11.In ZQuery.SQL kommen abfragen hinein.

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Sql Query und Dbf

Beitrag von hde »

Jochim hat geschrieben: 1. ZConnection auf Form setzen // ja
2.Database eintragen // ja
3.LibaryLocation eintragen // ja
4.Protocol auf sqlite-3 ändern // ja
5.Connected auf True setzen // zur Laufzeit
6.Zquery auf Form setzen // ja
7.Zconnection bei connection eintragen // ja, bei ZQuery1
8.Datasource auf form setzen // ja und bei ZQuery.DataSource eintragen // nein
8a. in Datasource Dataset auf ZQuery1 setzen
9.DB erzeugen --> wie erzeuge ich dann, mit welcher Komponente oder Kode die DB?
9.Createstatement in ZQery1.SQL eintragen
10.Zquery Active setzen // nein
10a.Zur Laufzeit: ZQuery1.ExecSQL
11.In ZQuery.SQL kommen abfragen hinein.
// später

Antworten