Datenbank nativ ausführen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Datenbank nativ ausführen

Beitrag von and4more »

Hallo Forum, weiß jemand, ob es außer dBase-Datenbanken noch andere gibt, die Lazarus/FreePascal nativ lesen und schreiben kann, also ohne Datenbank-Engine bzw. einer extra Bibliotheksdatei (.DLL/.SO)?
Habe über Google außer dBase leider nichts gefunden (Paradox ist nur lesbar).
Vielen Dank
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

charlytango
Beiträge: 843
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: Datenbank nativ ausführen

Beitrag von charlytango »

Hi -- könntest du vielleicht etwas näher erläutern warum du das möchtest bzw warum du ein Problem mit einer extra DB-Engine hast ?
Möglicherweise kann man ja auch etwas anderes empfehlen das deinem Einsatzzweck nahe kommt.

Vielleicht ist das etwas f dich:
"ZMSql is is an SQL enhanced in-memory database, operating with flat textual (csv) tables. Completely written in Pascal, it has no dependencies on external libraries."
http://forum.lazarus.freepascal.org/index.php?topic=13821.0

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Datenbank nativ ausführen

Beitrag von and4more »

...also in meinem Fall ist es so, dass in meinem Unternehmen die Ausführung von (Fremd-)Programmen sehr restriktiv gehandhabt wird, zum zweiten finde ich eine SQL-Datenbank für wenige hundert Datensätze einen gewissen “Overkill“ zumal ich finde, dass die Programmierung schwieriger ist und zudem gar kein Multiuser-Zugriff stattfinden muss. Es geht darum, dass ich einfach Daten bei Bedarf wieder hervorholen können möchte. Ich habe das bisher mit dBase realisiert. Hierbei stört mich allerdings, dass diese Datenbank Probleme mit UTF8 hat.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Datenbank nativ ausführen

Beitrag von and4more »

...und übrigens Danke für den Tipp. Ich werde mir die Datenbank mal genauer anschauen.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

charlytango
Beiträge: 843
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: Datenbank nativ ausführen

Beitrag von charlytango »

and4more hat geschrieben:...also in meinem Fall ist es so, dass in meinem Unternehmen die Ausführung von (Fremd-)Programmen sehr restriktiv gehandhabt wird, zum zweiten finde ich eine SQL-Datenbank für wenige hundert Datensätze einen gewissen “Overkill“ zumal ich finde, dass die Programmierung schwieriger ist und zudem gar kein Multiuser-Zugriff stattfinden muss. Es geht darum, dass ich einfach Daten bei Bedarf wieder hervorholen können möchte. Ich habe das bisher mit dBase realisiert. Hierbei stört mich allerdings, dass diese Datenbank Probleme mit UTF8 hat.


ooch dBase -- das ist ja ein richtiges dejavue -- erinnert mich an die Zeiten von Clipper und externen Bibliotheken für die Indizierung. Das waren noch Zeiten als man nicht wusste ob die 2,5 Mio Records in einer Datei/Tabelle auch morgen noch da sein würden und die Indizes regelmäßig gecrasht sind, mein Reindex hat damals 2 Stunden gebraucht ggggg

Die Vorsicht im Unternehmen ist sicher keine schlechte. Allerdings wird man auf die eine oder andere Art immer wieder Zugriffskomponenten auf Daten brauchen solange man nicht alles selbst programmiert. Was aber heutzutage imho wenig Sinn macht, da wärs mit rapid application development schnell vorbei.

Nicht nur wegen der Sicherheitsbedenken würde ich eine OpenSource Desktop-DB nehmen.
z.B. SQLite https://www.sqlite.org/about.html
da gibts auch passable (portable) Browser/Frontends dafür was beim Entwickeln hilfreich ist.
http://sqlitebrowser.org/
https://sqlitestudio.pl/index.rvt
Wiki gibts auch http://wiki.freepascal.org/SQLite
https://www.google.at/search?q=lazarus+sqlite+wiki

Einfach die sqlite3.dll (264kB) ins Projektverzeichnis (und noch eine ins Lazarusverzeichnis dann hast du den Zugriff auch in der IDE), eine DB-Datei mit einem der DB-Browser erstellen und du bist im Geschäft.
Zugriffskomponenten sind bei Lazarus dabei oder du installierst die ZEOS Komponenten.

Läuft, ist recht schlank und gräbt sich nicht ins Betriebssystem - also keine Installation nötig. Im Minimalfall hast du dann die Exe, die DLL und die DB-Datei - das wars.

have fun :)

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Datenbank nativ ausführen

Beitrag von and4more »

...leider werden auch dll's geblockt, deswegen wäre halt die nativ ausführbare Variante die beste, Werd mir mal ZMSQL anschauen.
Danke
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Datenbank nativ ausführen

Beitrag von wp_xyz »

Bist du auf Windows? Dann nimm doch das Access-Format.Ich weiß, Access ist bei den Spezialisten hier verpöhnt, aber ich habe zu meinen Delphi-Zeiten viel damit gemacht, und als Ersatz von dBase taugt es allemal. Der Vorteil ist: alle nötigen dll's sind auf jedem Windows-System vorhanden , selbst wenn kein Microsoft Office mit der Access-Anwendung installiert ist (ok - Windows 98 vielleicht nicht, aber selbst da kann man nachinstallieren).

Mehr Infos im wiki: http://wiki.freepascal.org/MS_Access

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Datenbank nativ ausführen

Beitrag von and4more »

...hey, das ist 'ne super Idee. Wir haben hier das komplette Office-Paket. Vorteil bei Access wäre auch, dass es leicht zu normalisieren ist und die Beziehungen zwischen den Tabellen lassen sich gut pflegen. Und nicht zuletzt...es übt.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Datenbank nativ ausführen

Beitrag von MacWomble »

ob das schlau ist, jemanden auf Access zu verweisen, anstatt eine vernünftige Datenbank zum Einsatz zu bringen?

Ich hatte massiv Probleme mit Access bei der Weiterentwicklung meiner Büroanwendungen und bereue nicht, zu einer vernünftigen SQL-Datenbank gewechselt zu haben. (vor 25 Jahre fand ich es toll Access und MS Entwicklungstools einzusetzen ... )

Naja, muss jeder selber wissen. :oops:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

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

Re: Datenbank nativ ausführen

Beitrag von MmVisual »

and4more hat geschrieben:...leider werden auch dll's geblockt


Man kann sicher bei der IT Abteilung beantragen dass die "SQLite.dll" akzeptiert wird. Damit hättest Du eine lokale Datenbank.

Von Access kann ich auch nur abraten! Nehme da lieber eine Text-Datei (XML oder JSON).
EleLa - Elektronik Lagerverwaltung - www.elela.de

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Datenbank nativ ausführen

Beitrag von and4more »

...es hängt ja auch immer vom Einsatzzweck ab, was die Datenbank leisten können muss. In meinem Fall Single-User und max. Anzahl der Datensätze im einstelligen Tausenderbereich und das ist bereits eine sehr großzügige Schätzung. Ich finde die Idee mit den Access-Datenbanken vom Grundsatz her deshalb gar nicht so verkehrt, auch wenn mir klar ist, dass die Access-Datenbanken ab einer gewissen Komplexität Schwierigkeiten machen (sollen), was manche ja auch von dBase sagen. In meinem Fall löse ich das bei dBase so, dass bei jedem Speichervorgang eine Sicherungskopie angelegt wird. Die Sicherungstiefe kann eingestellt werden, ist ja nur ne Textdatei ;-), und die ist auch nur wenige kB groß, so dass auch kaum Speicherplatz für die Sicherungsdaten "verschwendet" wird. Aufgrund von Office ist Access auf (fast) jedem System verfügbar, das ist doch sympathisch, oder. Ich hatte ursprünglich eine Firebird-Datenbank, die ja wie SQLite lediglich mit einer DLL funktionieren soll(te). Nach meinen bisherigen Erfahrungen bin ich aber eher zurückhaltend, da Lazarus doch offensichtlich Probleme hat die DLL zu finden. Schätze, dass dies bei SQLite ähnlich sein dürftte.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Datenbank nativ ausführen

Beitrag von wp_xyz »

and4more hat geschrieben:Aufgrund von Office ist Access auf (fast) jedem System verfügbar, das ist doch sympathisch, oder.

Natürlich - aber das hat nichts mit Office zu tun. Du kannst mit Lazarus/Delphi jede mdb-Datenbank öffnen, ob nun Office vorhanden ist oder nicht, zumindest unter Windows, evtl auch die neueren accdb-Dateien, aber damit habe ich immer wieder Probleme.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Datenbank nativ ausführen

Beitrag von af0815 »

wp_xyz hat geschrieben:
and4more hat geschrieben:Aufgrund von Office ist Access auf (fast) jedem System verfügbar, das ist doch sympathisch, oder.

Natürlich - aber das hat nichts mit Office zu tun. Du kannst mit Lazarus/Delphi jede mdb-Datenbank öffnen, ob nun Office vorhanden ist oder nicht, zumindest unter Windows...

Das man jede mdb öffnen kann unter WIndows, ist nicht sichergestellt. Es hängt von der Windowsversion und besonders davon ab, was eine IT vorgesehen hat. Die kann beim Scripten der Installation sehr wohl einem das Leben schwer machen. AUch muss man ein wenig aufpassen das Lazarusversion(32/64 Bit) und die Treiber zusammenpassen. Zusätzlich muss man gerade bei Access darauf aufpassen, das man auf die Verwaltungstools (z.B. Compress) Zugriff hat, sonst hat man eine Applikation die die Datenbank weder verkleinern noch reparieren kann. Es ist mir einer anderen Firma passiert, das ich die lokale DB mir auf den Computer holen musste, um die Datenbank zu komprimieren (Bereinigen) und eventuelle Fehler zu bereinigen, da dort lokal Access nicht erlaubt war.

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

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

Re: Datenbank nativ ausführen

Beitrag von MmVisual »

and4more hat geschrieben:da Lazarus doch offensichtlich Probleme hat die DLL zu finden. Schätze, dass dies bei SQLite ähnlich sein dürftte.


Verwende Zeos, so wie schon zuvor empfohlen, mit SQLite. Die TZConnection Komponente erkennt in der Regel automatisch die DLL sofern diese im gleichen Verzeichnis liegt oder im Suchpfad vom Betriebssystem. Und falls du doch die DLL wo anders liegen haben willst, so kannst du den Pfad selbst der Komponente per "LibraryLocation" Parameter übergeben.

Nicht Lazarus hat Probleme die DLL zu finden, eher Du hast diese Probleme :mrgreen:
EleLa - Elektronik Lagerverwaltung - www.elela.de

and4more
Beiträge: 207
Registriert: Do 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit)
CPU-Target: 32 Bit / 64 Bit

Re: Datenbank nativ ausführen

Beitrag von and4more »

Nicht Lazarus hat Probleme die DLL zu finden, eher Du hast diese Probleme :mrgreen:


Nö, weder im Programmverzeichnis noch im Datenbankverzeichnis noch im Systemverzeichnis von Windows findet Lazarus die DLL angeblich nicht obwohl überall vorhanden.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit

Antworten