Datenbankanwendung mit Lazarus entwickeln
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1646
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Datenbankanwendung mit Lazarus entwickeln
Hallo zusammen,
nehmen wir an ich hätte die Absicht, eine vollkommen neue (Datenbank) Anwendung mit Lazarus zu entwickeln.
Nun hab ich zwar 30 Jahre Erfahrung mit der Programmierung in Pascal (bislang hauptsächlich mit Delphi).
Allerdings bislang keine Datenbankanwendungen.
Welche Datenbank und welche Zugriffskomponenten sollte ich verwenden und wie sollte der prinzipielle Aufbau einer solchen Anwendung aussehen?
Man hat ja hier ziemlich die Qual der Wahl.
nehmen wir an ich hätte die Absicht, eine vollkommen neue (Datenbank) Anwendung mit Lazarus zu entwickeln.
Nun hab ich zwar 30 Jahre Erfahrung mit der Programmierung in Pascal (bislang hauptsächlich mit Delphi).
Allerdings bislang keine Datenbankanwendungen.
Welche Datenbank und welche Zugriffskomponenten sollte ich verwenden und wie sollte der prinzipielle Aufbau einer solchen Anwendung aussehen?
Man hat ja hier ziemlich die Qual der Wahl.
Re: Datenbankanwendung mit Lazarus entwickeln
Ich verwende schon sehr lange ZEOS Access (über fpcupdeluxe installieren) im Zugriff auf MariaDB
Bin sehr zufrieden.
Bin sehr zufrieden.
Zuletzt geändert von six1 am So 20. Sep 2020, 08:44, insgesamt 1-mal geändert.
Gruß, Michael
- af0815
- Lazarusforum e. V.
- Beiträge: 6777
- 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: Datenbankanwendung mit Lazarus entwickeln
SQLdb oder ZEOS.
SQLdb ist bei fpc/Lazarus dabei. ZEOS ist extra Komponente. Die beiden sind nicht so 100% austauschbar. Wenn man sich für einer der System entscheidet, so kann man nicht einfach tauschen.
Die neue native Reportingengine von Lazarus/FPC kann mit ZEOS nicht nativ umgehen, die ist SQLdb lastig (derzeit).
Wenn man mit Delphi kompatibel sein will, kommt man um ZEOS nicht herum.
Punkto Mächtigkeit, so hat SQLdb den Vorsprung von ZEOS meiner Erfahrung nach aufgeholt. Das ist aber eine subjektive Meinung und ich verwende beide Systeme. Neue Projekte fange ich mit SQLdb an, wegen dem Reporting mit fpReport. Das kann ohne Widgetset auch rendern (pdf). Das ist bei headless Systemen super.
Wie gesagt, alles hat Vor-und Nachteile.
Bezüglich Datenbankserver, hängt es vom System stark ab, auch davon auf was man eingeschult ist (ja, das gibt es auch).
SQLite, MariaDb und MS-SQL sind für mich normal. MS-SQL läuft auch unter Ubuntu 16 bzw. 18 perfekt. Administieren tut man den halt von einem Windows Rechner, da hat man keinen Unterschied zu einem Windowsserver. Die Expressversion ist da frei und hat Access abgelöst. DBase und Access würde ich um jeden Preis vermeiden, da ist SQLite um Lichtjahre besser.
Egal was man nimmt, die Lernkurve ist da
SQLdb ist bei fpc/Lazarus dabei. ZEOS ist extra Komponente. Die beiden sind nicht so 100% austauschbar. Wenn man sich für einer der System entscheidet, so kann man nicht einfach tauschen.
Die neue native Reportingengine von Lazarus/FPC kann mit ZEOS nicht nativ umgehen, die ist SQLdb lastig (derzeit).
Wenn man mit Delphi kompatibel sein will, kommt man um ZEOS nicht herum.
Punkto Mächtigkeit, so hat SQLdb den Vorsprung von ZEOS meiner Erfahrung nach aufgeholt. Das ist aber eine subjektive Meinung und ich verwende beide Systeme. Neue Projekte fange ich mit SQLdb an, wegen dem Reporting mit fpReport. Das kann ohne Widgetset auch rendern (pdf). Das ist bei headless Systemen super.
Wie gesagt, alles hat Vor-und Nachteile.
Bezüglich Datenbankserver, hängt es vom System stark ab, auch davon auf was man eingeschult ist (ja, das gibt es auch).
SQLite, MariaDb und MS-SQL sind für mich normal. MS-SQL läuft auch unter Ubuntu 16 bzw. 18 perfekt. Administieren tut man den halt von einem Windows Rechner, da hat man keinen Unterschied zu einem Windowsserver. Die Expressversion ist da frei und hat Access abgelöst. DBase und Access würde ich um jeden Preis vermeiden, da ist SQLite um Lichtjahre besser.
Egal was man nimmt, die Lernkurve ist da

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Levario
- Beiträge: 132
- Registriert: Mo 1. Sep 2014, 14:32
- OS, Lazarus, FPC: Windows 11 Pro , MacOS und Linux Mint (Version 3.4 for Windows 64 bit )
- CPU-Target: 64 Bit
- Wohnort: Deutschland / NRW
Re: Datenbankanwendung mit Lazarus entwickeln
Hallo Fliegermichl,fliegermichl hat geschrieben: Sa 19. Sep 2020, 11:15 Welche Datenbank und welche Zugriffskomponenten sollte ich verwenden und wie sollte der prinzipielle Aufbau einer solchen Anwendung aussehen?
Man hat ja hier ziemlich die Qual der Wahl.
ich selber nutze nur Lazarus (kein Delphi) und setze für die lokale Entwicklung 1 PC Version Firebird Embedded Server, Firebird, MySQL oder Maria DB + Zeos ein.
Für Server Client Version MariaDB, MySQL in der Version 10 + Zeos. Hat den Vorteil auch andere Systeme können hier ohne Probleme zugreifen und es gibt ne Menge Literatur und Kurse dazu. Desktop Entwicklung mit Lazarus und Freepascal, Webentwicklung mit HTML, PHP + Framneworks wie Bootstrap. Apps der Einfachheitshalber mit Flutter und Dart (Google Framework Java ähnlich für iOS und Android). Als Server meist Linux Ubuntu Server in der aktuellen LTS = Long Term Support Version.
Bin allerdings reiner Hobby Entwickler. Die virtuelle Umgebung (VMs Server und Client Systeme in Linux, Mac und Windows) habe ich auf einen kleinen MicroServer + Proxmox virtualisiert. Spiele ab und zu auch mit Windows Server 2016 herum. Allerdings bislang ohne grosse Ergebnisse / Erfahrungen.
Würde mich auch mal interessieren wie ihr das macht! (Ohne Delphi)
Gruß
Levi
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).
Re: Datenbankanwendung mit Lazarus entwickeln
Leicht off-topic, aber da du das erwähnst.
Ich habe mal für das CMS/CMF Processwire einen Wysiwyg Bootstrap 4 Editor gebastelt, so eine Art "Studie".
Man kann so eine responsive Webseite layouten ohne zu tippen und v.A. ohne alle die CSS Klassen zu kennen.
Ein Video gibt es hier: http://theowp.bplaced.net/upload/reptile.html
(Dies ist nicht die aktuellste Version, aber das längste Video, welches zeigt wie es geht. Diese Version hat noch ein paar kleine Macken).
Es ist natürlich schwierig zu verstehen was da abgeht, wenn man Bootstrap und Processwire nicht kennt.
Der so generierte Code ist astrein, so dass man das so erstellte Resultat auch einfach herauskopieren kann, falls ein eigentliches CMS nicht gewünscht ist.
Dann ist es eine Art IDE.
-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Datenbankanwendung mit Lazarus entwickeln
Zur Datenbank und den Zugriffskomponenten schließe ich mich af0815 an 
Früher (unter Delphi) habe ich die Funktionen für die Datenbankanbindung in einem Datenmodul verwaltet. Das hatte aber immer wieder Probleme mit Vererbung und hat auch öfter mal andere Mucken gemacht.
In Lazarus hab dich leider die gleichen Erfahrungen gemacht.
Daher habe ich dann auf die GUI-Programmierung mit Datenmodul (Nur für Datenbankanbindung) verzichtet und alles in ein Singletonobjekt gepackt (die gleiche Strategie wie ich es bei Verwaltung von Programmeinstellungen, Splashscreen, Logging, Application-GUI verwende)
Seitdem klappt das schön aufgeräumt und seidig. Mittels Defines ist das Objekt auch fähig unterschiedliche Datenbanken zu nutzen. Bezüglich Lernkurve: nicht vergessen die aktuellen Zugriffs-DLLs (oder entsprechendes Linux-Äquivalent) je nach verwendeter DB mit berücksichtigen.
In einfacheren/übersichtlichen Formularen klebe ich die nötigen Komponenten (TDatasource, eine der SQL Queries etc.) direkt aufs Formular. In komplexeren Formularen mit vielen Datenzugriffskomponenten nutze ich aus Übersichtsgründen dafür ein Datenmodul. In dieser Nutzungsvariante hatte ich damit auch nie wieder Probleme. Die nötige Connection Eigenschaft für die Datenzugriffskomponenten auf Formular und Datenmodul weise ich manuell im jeweiligen Create-Event zu.
Je nachdem wie umfangreich die Datenbankanwendung werden soll, sind Programme zum Datenbankdesign, zur Datenbankverwaltung und zum Lesen/checken der Daten sinnvoll. Ich arbeite unter Windows. Für mich reicht HeidiSQL völlig aus um Tabellen zu erstellen und die Datenbank zu warten. Für eine schnelle Installation zum Entwickeln mit MariaDB benutze ich XAMPP.
Hoffe es hilft die Lernkurve etwas zu verflachen

Früher (unter Delphi) habe ich die Funktionen für die Datenbankanbindung in einem Datenmodul verwaltet. Das hatte aber immer wieder Probleme mit Vererbung und hat auch öfter mal andere Mucken gemacht.
In Lazarus hab dich leider die gleichen Erfahrungen gemacht.
Daher habe ich dann auf die GUI-Programmierung mit Datenmodul (Nur für Datenbankanbindung) verzichtet und alles in ein Singletonobjekt gepackt (die gleiche Strategie wie ich es bei Verwaltung von Programmeinstellungen, Splashscreen, Logging, Application-GUI verwende)
Seitdem klappt das schön aufgeräumt und seidig. Mittels Defines ist das Objekt auch fähig unterschiedliche Datenbanken zu nutzen. Bezüglich Lernkurve: nicht vergessen die aktuellen Zugriffs-DLLs (oder entsprechendes Linux-Äquivalent) je nach verwendeter DB mit berücksichtigen.
In einfacheren/übersichtlichen Formularen klebe ich die nötigen Komponenten (TDatasource, eine der SQL Queries etc.) direkt aufs Formular. In komplexeren Formularen mit vielen Datenzugriffskomponenten nutze ich aus Übersichtsgründen dafür ein Datenmodul. In dieser Nutzungsvariante hatte ich damit auch nie wieder Probleme. Die nötige Connection Eigenschaft für die Datenzugriffskomponenten auf Formular und Datenmodul weise ich manuell im jeweiligen Create-Event zu.
Je nachdem wie umfangreich die Datenbankanwendung werden soll, sind Programme zum Datenbankdesign, zur Datenbankverwaltung und zum Lesen/checken der Daten sinnvoll. Ich arbeite unter Windows. Für mich reicht HeidiSQL völlig aus um Tabellen zu erstellen und die Datenbank zu warten. Für eine schnelle Installation zum Entwickeln mit MariaDB benutze ich XAMPP.
Hoffe es hilft die Lernkurve etwas zu verflachen

- af0815
- Lazarusforum e. V.
- Beiträge: 6777
- 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: Datenbankanwendung mit Lazarus entwickeln
Kann ich nicht so unterschreiben, allerdings wird bei mir alles auser dem MainForm im Code erzeugt ! Man darf sich nicht auf die Reihenfolge der Fenstererstellung verlassen müssen. Dadurch ist es auch besser testbar. Queries werden im DM bei mir dynamisch im Code erstellt und die Lebensdauer ist je nach Objekt unterschiedlich. Klar damit geht klassischen Rad nicht unbedingt. Zum bastelncharlytango hat geschrieben: So 20. Sep 2020, 11:13 Zur Datenbank und den Zugriffskomponenten schließe ich mich af0815 an
Früher (unter Delphi) habe ich die Funktionen für die Datenbankanbindung in einem Datenmodul verwaltet. Das hatte aber immer wieder Probleme mit Vererbung und hat auch öfter mal andere Mucken gemacht.
In Lazarus hab dich leider die gleichen Erfahrungen gemacht.




Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1646
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Datenbankanwendung mit Lazarus entwickeln
vielen Dank für eure zahlreichen Antworten.
Genau das ist der Grund weshalb ich gefragt hatte. Ich arbeite seit 20 Jahren an einem 3D CAD das mittlerweile doch recht umfangreich geworden ist.
Obwohl ich von Anfang an "Bussines Code" von der Oberfläche getrennt gehalten hatte, haben sich doch jede Menge "Verquickungen" und Basteleien
eingeschlichen die die Wartbarkeit und Übersichtlichkeit erschweren.
Deswegen möchte ich mir jetzt im Vorfeld klare Ziele stecken und auch eine ungefähre Richtung wie ich diese zu erreichen gedenke.
-
- 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: Datenbankanwendung mit Lazarus entwickeln
Ich nutze ebenfalls Zeos.
Ich wollte mal in mein Code SQLDb testweise verwenden, ist leider fehl geschlagen, Zeos hat da ein paar kleine aber wichtige Features die SQLDb leider nicht nicht.
z.B. wenn man auf einen Tabellentitel klick kann man per Parameter der TZQuery die Spaltensortierung übergeben, dann sortiert Zeos im RAM die Daten um, ohne erneute SQL Abfrage. Somit werde alle mit verknüpften Tabellen nicht neu geladen.
Auch braucht man sich bei Zeos nicht extra um die Transaction zu kümmern, das macht Zeos ganz alleine.
Ich habe das dann mit SQLDb gelassen, der Umbau war mir zu aufwändig. Ich weiß nicht ob in der aktuellsten Version SQLDb dieses Feature auch schon hat.
Hier der SVN Link wo man das ganze Zeos mit TortuiseSVN laden kann:
svn://svn.code.sf.net/p/zeoslib/code-0
Damit ist man immer aktuell, bzw. kann sich den Branch laden den man braucht.
Ich wollte mal in mein Code SQLDb testweise verwenden, ist leider fehl geschlagen, Zeos hat da ein paar kleine aber wichtige Features die SQLDb leider nicht nicht.
z.B. wenn man auf einen Tabellentitel klick kann man per Parameter der TZQuery die Spaltensortierung übergeben, dann sortiert Zeos im RAM die Daten um, ohne erneute SQL Abfrage. Somit werde alle mit verknüpften Tabellen nicht neu geladen.
Auch braucht man sich bei Zeos nicht extra um die Transaction zu kümmern, das macht Zeos ganz alleine.
Ich habe das dann mit SQLDb gelassen, der Umbau war mir zu aufwändig. Ich weiß nicht ob in der aktuellsten Version SQLDb dieses Feature auch schon hat.
Hier der SVN Link wo man das ganze Zeos mit TortuiseSVN laden kann:
svn://svn.code.sf.net/p/zeoslib/code-0
Damit ist man immer aktuell, bzw. kann sich den Branch laden den man braucht.
EleLa - Elektronik Lagerverwaltung - www.elela.de
- af0815
- Lazarusforum e. V.
- Beiträge: 6777
- 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: Datenbankanwendung mit Lazarus entwickeln
Kann es schon lange. Nur anders zu konfigurieren.MmVisual hat geschrieben: Mi 23. Sep 2020, 20:49 Auch braucht man sich bei Zeos nicht extra um die Transaction zu kümmern, das macht Zeos ganz alleine.
Ich habe das dann mit SQLDb gelassen, der Umbau war mir zu aufwändig. Ich weiß nicht ob in der aktuellsten Version SQLDb dieses Feature auch schon hat.
Umbau ist aufwändig, das ist mir klar

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).