Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Lokale Datenbank für eigene Anwendung (https://www.delphipraxis.net/177924-lokale-datenbank-fuer-eigene-anwendung.html)

Sim_Star 6. Dez 2013 01:05

Datenbank: MYSQL • Version: 5 • Zugriff über: Delphi

Lokale Datenbank für eigene Anwendung
 
Hallo, ich möchte eine Anwendung in mit Delphi programmieren, mit der ich MYsql Datenbanken benötige.
Meine derzeitigen Anwendungen nutzen auch MYsql, allerdings über einen Webanbieter. D.h. ich greife immer übers Internet auf meine Datenbanken zu. Ich möchte jetzt aber eine Anwendung schreiben die auch MYsql nutzt, aber das ganze quasi offline auf dem lokalen Rechner. Dazu soll MYsql nicht vom Nutzer installiert werden müssen.

Die Lösung Embedded?

Wie funktioniert dies, und was benötige ich dafür?

Vielen Dank im Vorraus.

LG Marco

Sir Rufo 6. Dez 2013 01:08

AW: Lokale Datenbank für eigene Anwendung
 
Wenn die Software nicht OpenSource wird, dann brauchst du viel Geld Bei Google suchenLizenzfalle MySQL

Hier im Forum suchenmysql embedded

Sim_Star 6. Dez 2013 01:39

AW: Lokale Datenbank für eigene Anwendung
 
Ne also opensource solls net sein. was ist den kostenlos und mysql recht ähnlich?

blackfin 6. Dez 2013 03:08

AW: Lokale Datenbank für eigene Anwendung
 
Für Embedded kann ich dir die Firebird-Datenbank empfehlen.
Die gibts als embedded-Variante, ist "rock-solid" und hat einen ähnlichen SQL-Syntax.
Allerdings funktionieren einige Sachen doch anders als in mySQL (AutoInc-Felder, Generatoren etc.)

Technisch funktioniert das dann mit einer DLL, über die du lokale Datenbanken in deinem Programm öffnen kannst.

Vorteil: Keine Server-Installation nötig.
Nachteil: Es kann immer nur ein einzelnes Programm eine Datenbank im Schreibzugriff geöffnet haben, zumindest bei < Firebird 2.5.

ConstantGardener 6. Dez 2013 05:15

AW: Lokale Datenbank für eigene Anwendung
 
...ich werfe mal NEXUSDB ins Rennen.

Ist in der Embedded Version kostenlos und wird komplett in die EXE compiliert (da in Delphi geschrieben). Seit Jahren meine Wahl! :thumb:

ca cg

Furtbichler 6. Dez 2013 06:31

AW: Lokale Datenbank für eigene Anwendung
 
SQL-Server 2012 Express. Das Nonpluslultra (imho), viel schneller als Firebird (eigene Erfahrung). SQL-Server 2012 ist soetwas wie ein LKW mit Turbinenantrieb.

Wenn Du allerdings niemals einen LKW benötigen wirst, dann ist Firebird nicht nur ausreichend, sondern auch wirklich wirklich zu empfehlen.

Bernhard Geyer 6. Dez 2013 07:28

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von ConstantGardener (Beitrag 1238711)
...ich werfe mal NEXUSDB ins Rennen.

Ist in der Embedded Version kostenlos und wird komplett in die EXE compiliert (da in Delphi geschrieben). Seit Jahren meine Wahl! :thumb:

Kostenlos? Da hast du was mißverstanden. Die Verteilung ist kostenlos. Jeder Entwickler benötigt aber eine Lizenz für die Entwicklung (Jedenfalls wenn Sie wie wir nur Komponenten mit Quellcode kaufen). Hier die Preisübersicht: http://www.nexusdb.com/support/index.php?q=pricing

Bernhard Geyer 6. Dez 2013 07:33

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von Furtbichler (Beitrag 1238712)
SQL-Server 2012 Express. Das Nonpluslultra (imho), viel schneller als Firebird (eigene Erfahrung). SQL-Server 2012 ist soetwas wie ein LKW mit Turbinenantrieb.

Man sollte aber auch die Einschränkungen/Nachteile kennen. Max 1 GB RAM, 10 GB DB. Im Rahmen der Sicherheitsupdates sind 500 MB große Updates zu erwarten. Sehr hohe Gefahr das mit nächster Windows-Version man zwangsupdaten muss da die dann alten Express-Versionen nicht oder nur mit Anpassungen lauffähig sind. Gefahr das durch undurchsichtige Windows-Einstellungen Sicherheits-Updates des DBMS fehlschlagen, ...

Als Kostengünstige Version bei der man auch Administrationsaufwand aktzeptiert - Super Lösung
Als Embedded Version bei der eine Verteilung auf tausende Rechner ohne Aufwand möglich sein muss - Wenn möglich nicht nehmen.

Back2Code 6. Dez 2013 08:34

AW: Lokale Datenbank für eigene Anwendung
 
Was ist mit SQLite?

https://www.sqlite.org/

Bernhard Geyer 6. Dez 2013 09:16

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von Back2Code (Beitrag 1238723)
Was ist mit SQLite?

https://www.sqlite.org/

Vor 3-4 Jahren hatte sich SQLite als grottenlangsam herausgestellt (da war ich auf der Suche nach neuer Mitlieferbarer DB)

RSF 6. Dez 2013 09:39

AW: Lokale Datenbank für eigene Anwendung
 
Ich verwende "Advantage Database" als Local Server.
- Local Server (ALS) = kostenlos ( aber der ADS ist kostenpflichtig)
- einfache Handhabung (mit Advantage VCL-Komponenten )
- nur ein paar Dlls ins Anwendungsverzeichnis

Perlsau 6. Dez 2013 09:46

AW: Lokale Datenbank für eigene Anwendung
 
Ich würde dir ebenfalls Firebird embedded empfehlen: Wirklich absolut kostenlos ohne irgendwelche Lizenzfallen, wird regelmäßig gepflegt und weiterentwickelt und bietet ab der Version 2.5 auch Mehrbenutzerzugriff (zuvor war das der Server-Version vorbehalten). Zudem gibt es bei IBExpert den gleichnamigen DB-Manager, kostenlos als Personal-Version, der normalerweise vollkommen ausreicht und alle nötigen Funktionen bietet.

jaenicke 6. Dez 2013 09:51

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von Furtbichler (Beitrag 1238712)
SQL-Server 2012 Express. Das Nonpluslultra (imho), viel schneller als Firebird (eigene Erfahrung). SQL-Server 2012 ist soetwas wie ein LKW mit Turbinenantrieb.

Wohl eher Microsoft SQL Server Compact, denn das ist die Embedded Variante. ;-)

Zitat:

Zitat von Bernhard Geyer (Beitrag 1238716)
Als Embedded Version bei der eine Verteilung auf tausende Rechner ohne Aufwand möglich sein muss - Wenn möglich nicht nehmen.

Das gilt vielleicht für die Express Edition, aber nicht für die Compact, denn da sind das nur ein paar DLLs, die mit verteilt werden müssen.

SQL Server Compact und Firebird Embedded laufen beide sehr gut. SQL Server Compact wird allerdings leider von FireDAC nicht unterstützt, Firebird Embedded schon. Ich würde daher auch zu letzterem tendieren.

Bernhard Geyer 6. Dez 2013 09:57

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von RSF (Beitrag 1238735)
Ich verwende "Advantage Database" als Local Server.
- Local Server (ALS) = kostenlos ( aber der ADS ist kostenpflichtig)

Aber nur wenn man keine Remoting-Dienste wie Citrix oder Remote Desktop einsetzt. Dort ist selbst ALS kostenpflichtig.

Bernhard Geyer 6. Dez 2013 10:03

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von jaenicke (Beitrag 1238737)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1238716)
Als Embedded Version bei der eine Verteilung auf tausende Rechner ohne Aufwand möglich sein muss - Wenn möglich nicht nehmen.

Das gilt vielleicht für die Express Edition, aber nicht für die Compact, denn da sind das nur ein paar DLLs, die mit verteilt werden müssen.

Wie schauts hier mit dem Zugriff von Delphi aus? Die Compact ist ja primär AFAIK nur für .NET-Anwendungen so einfach zu verwenden.

Zitat:

Zitat von jaenicke (Beitrag 1238737)
SQL Server Compact wird allerdings leider von FireDAC nicht unterstützt, Firebird Embedded schon. Ich würde daher auch zu letzterem tendieren.

Das Problem dürfte sein das diese AFAIK nur so einfach in .NET-ANwendungen verwendet werden kann.

jaenicke 6. Dez 2013 10:06

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1238740)
Wie schauts hier mit dem Zugriff von Delphi aus? Die Compact ist ja primär AFAIK nur für .NET-Anwendungen so einfach zu verwenden.

Der Zugriff geht z.B. via OLE DB problemlos, z.B. per Ado.

Furtbichler 6. Dez 2013 10:07

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von jaenicke (Beitrag 1238742)
Der Zugriff geht z.B. via OLE DB problemlos, z.B. per Ado.

:thumb: Wieder was gelernt.

Bernhard Geyer 6. Dez 2013 10:14

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von jaenicke (Beitrag 1238742)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1238740)
Wie schauts hier mit dem Zugriff von Delphi aus? Die Compact ist ja primär AFAIK nur für .NET-Anwendungen so einfach zu verwenden.

Der Zugriff geht z.B. via OLE DB problemlos, z.B. per Ado.

Hättest Du ein Beispiel?
Ich sehe gerade das die DevArts das auch unterstützten würden (http://www.devart.com/sdac/)

jaenicke 6. Dez 2013 10:20

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1238745)
Hättest Du ein Beispiel?

Delphi-Quellcode:
  SqlConnection := TADOConnection.Create(nil);
  SqlConnection.ConnectionString := 'Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source=' + AppDataPath + 'test.sdf;';
Dann halt noch eine TADOQuery und die Connection zuweisen usw.

p80286 6. Dez 2013 10:54

AW: Lokale Datenbank für eigene Anwendung
 
ADO? War da nicht mal was mit abgekündigt und man sollte auf ODBC umstellen?
(ich nutze ADO wo immer es geht)

Gruß
K-H

Bernhard Geyer 6. Dez 2013 10:55

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von jaenicke (Beitrag 1238747)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1238745)
Hättest Du ein Beispiel?

Delphi-Quellcode:
  SqlConnection := TADOConnection.Create(nil);
  SqlConnection.ConnectionString := 'Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source=' + AppDataPath + 'test.sdf;';
Dann halt noch eine TADOQuery und die Connection zuweisen usw.

Und das geht ohne das dieses Provider installiert ist:gruebel:
Ab welcher Windows-Version hat hier MS diese OLE/DB-Magic eingebaut?

jaenicke 6. Dez 2013 11:32

AW: Lokale Datenbank für eigene Anwendung
 
Man muss die sqlceoledb30.dll mitliefern und für diese Zugriffsart auch registrieren. Eine weitere Installation ist nicht notwendig. Denn es geht ja um embedded und nicht umbedingt um portabel, deshalb ist die Registrierung ja erst einmal dadurch nicht ausgeschlossen.

Wenn man das nicht möchte, geht der Zugriff über OLE DB nicht.

VCLControls 6. Dez 2013 12:11

AW: Lokale Datenbank für eigene Anwendung
 
Ich habe hier auch die Devart-Komponenten (etwas ältere Version) im Einsatz, die eine Embedded-Connection dabei haben.
Diese braucht aber eine libmysqld.dll Sonst keine weitere Installation.
Wie es hier bezüglich einer Lizenz für die DLL aussieht kann ich nicht sagen.
Das MySQL-Gegenstück ist ja die MariaDB die ebenfalls diese Lib mitbringt und es keine Lizenz-Fallen gibt.

Bernhard Geyer 6. Dez 2013 12:27

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von VCLControls (Beitrag 1238768)
Ich habe hier auch die Devart-Komponenten (etwas ältere Version) im Einsatz, die eine Embedded-Connection dabei haben.
Diese braucht aber eine libmysqld.dll Sonst keine weitere Installation.
Wie es hier bezüglich einer Lizenz für die DLL aussieht kann ich nicht sagen.

Ist Lizenzpflichtig. Man bekommt aber "günstige" Firmenlizenz ab 30 k€/Jahr (vermutlich nach Oracle-Übernahme 60 k€/Jahr)

Zitat:

Zitat von VCLControls (Beitrag 1238768)
Das MySQL-Gegenstück ist ja die MariaDB die ebenfalls diese Lib mitbringt und es keine Lizenz-Fallen gibt.

Für MariaDB und Embedded gibt's diesen Thread

VCLControls 6. Dez 2013 12:40

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Für MariaDB und Embedded gibt's diesen Thread
Das Thema kenne ich.
Entscheidend wäre hier doch aber die Frage, ob die neuste Version der Devarts mit der Lib von MariaDB zusammen arbeitet?
Sonst die MySQL und MariaDB auch kompatibel.

In meiner etwas älteren Version der Devarts kann die MariaDB-DLL leider nicht geladen werden.

Bernhard Geyer 6. Dez 2013 12:44

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von VCLControls (Beitrag 1238773)
Zitat:

Für MariaDB und Embedded gibt's diesen Thread
Das Thema kenne ich.
Entscheidend wäre hier doch aber die Frage, ob die neuste Version der Devarts mit der Lib von MariaDB zusammen arbeitet?
Sonst die MySQL und MariaDB auch kompatibel.

In meiner etwas älteren Version der Devarts kann die MariaDB-DLL leider nicht geladen werden.

1, Es gibt keine Embededded-Version ("There is no embedded version of MariaDB.")

2, Für die Nicht-Embedded-Version kann man DevArt so konfigieren das keine DLL benötigt wird (ist aber schon seit Jahren so), so das hier nur die Kompatiblität auf Protokollebene relevant ist.

ConstantGardener 6. Dez 2013 13:25

AW: Lokale Datenbank für eigene Anwendung
 
@Bernhard: Jupp da hast Du natürlich Recht. NexusDB ist mit Quelltext kostenpflichtig.
Die Embedded Version als .dcu-only ist aber kostenfrei und reicht für kleinere Projekte völlig aus.
Als Applicationserver darfst Du diese Version aber auch nicht nutzen.

grl 6. Dez 2013 14:04

AW: Lokale Datenbank für eigene Anwendung
 
Wenn's wirklich embedded (also in der exe) sein soll und auch was kosten darf ist meine Empfehlung AbsoluteDB. Da haben wir sehr gute Erfahrungen damit.

Wenn's ein bischen mehr SQL und ein bischen weniger embedded sein soll: Die FirebirdSQL-embedded DLL. Extrem stabil, ausreichend schnell und nicht so ein gefummel wie das MS-Teil. Damit ist's auch im deployment sehr Admin- und Supportfreundlich. Wenns denn dann doch mal mehr User sein sollen und doch ein Server sein darf: Einfach die DB-Einstellungen auf der Server verbiegen und gut is...

Gruß
GRL

Kirchi 6. Dez 2013 14:51

AW: Lokale Datenbank für eigene Anwendung
 
Ich hatte mich über den SQL Server Compact tiefer informiert und muss leider mitteilen, dass dieser doch nicht ganz kostenlos ist:

Zitat:

Für jede Verbindung mit SQL Server, auch für eine Verbindung von SQL Server Compact, ist eine Clientzugriffslizenz (Client Access License, CAL) für SQL Server erforderlich.
:(

Gruß

Perlsau 6. Dez 2013 15:09

AW: Lokale Datenbank für eigene Anwendung
 
Und ich bin bei Absolute Database nicht sicher, denn ich glaube bereits mehrfach gelesen zu haben, daß die kostenfreie Version lediglich für nichtkommerzielle Anwendungen eingesetzt werden darf. Embedded muß übrigens nicht zwangsläufig bedeutet, daß die Datenbank in die Exe einkompiliert wird, sondern daß sie in den Programmordner eingebettet ist, wie man das von sog. Stickware kennt. Bei Firebird bedeutet Embedded einfach nur, daß man keinen Firebird-Server installieren muß, weil der durch eine spezielle fbclient.dll ersetzt wird, die es übrigens sowohl für 32 als auch für 64-bit-Windows gibt. Die DLL stellt Firebird-Funktionalität zur Verfügung, seit Version 2.5 auch für Multiuser-Betrieb. Das heißt, man kann eine FB-Embedded durauch auch in einem Netzwerk betreiben, das lediglich über eine Netzwerkplatte als gemeinsame Dateiablage verfügt. Dort kann man dann ohne weiteres Anwendung nebst Datenbank ablegen. Ob es FB-Embedded auch für Linux und Mac gibt, weiß ich gerade nicht auswendig.

grl 6. Dez 2013 15:22

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von Perlsau (Beitrag 1238806)
Ob es FB-Embedded auch für Linux [...] gibt, weiß ich gerade nicht auswendig.

Es gibt. Sonst würd ich das Teil nie empfehlen... :mrgreen: :mrgreen: :mrgreen:

GRL

taveuni 6. Dez 2013 15:53

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Zitat von Kirchi (Beitrag 1238799)
Ich hatte mich über den SQL Server Compact tiefer informiert und muss leider mitteilen, dass dieser doch nicht ganz kostenlos ist:

Zitat:

Für jede Verbindung mit SQL Server, auch für eine Verbindung von SQL Server Compact, ist eine Clientzugriffslizenz (Client Access License, CAL) für SQL Server erforderlich.
:(

Gruß



Hast Du einen Link für diese Quelle? Kann es sein dass es da um CAL's für den Windows Server geht?
Auf der Compact Seite unter zusätzliche Informationen steht nämlich:

SQL Server Compact 4.0 ist mit Weiterverteilungslizenzbedingungen frei weitervertreibbar. Anwendungsentwickler, die SQL Server Compact 4.0, weiterverteilen, können sich optional auf der SQL Server Compact-Weiterverteilungssite registrieren. Registrierte Entwickler erhalten Informationen über wichtige Sicherheitspatches und Hotfixes von SQL Server Compact, die an Clientinstallationen weitergegeben werden können.

blackfin 6. Dez 2013 17:07

AW: Lokale Datenbank für eigene Anwendung
 
Zitat:

Wenn's ein bischen mehr SQL und ein bischen weniger embedded sein soll: Die FirebirdSQL-embedded DLL
Mit ein bißchen initialem Aufwand geht es auch, die Firebird-DLL + Datenbank mit in die EXE zu kompilieren.

Dazu braucht man nur ein Tool, mit der man die Applikation in sich selbst virtualisieren kann.
Danach lädt man DLL + Datenbank aus dem Resource-Stream in den Speicher, legt ein virtuelles Dateisystem an und lädt die in den Speicher geladene DLL dynamisch nach.

Allerdings ist der Aufwand etwas größer, die geänderten Daten dann wieder in die EXE zu bekommen.
Das halte ich aber generell eh für keine gute Idee, da darauf auch viele Virenscanner anspringen, wenn sich die Größe einer EXE dauernd ändert.
DLL + Datenbank in der EXE bietet sich eigentlich nur für einen ReadOnly-Zugriff auf die Datenbank an.

Sir Rufo 6. Dez 2013 19:34

AW: Lokale Datenbank für eigene Anwendung
 
Wenn man das auch richtig liest, dann versteht man auch den Sinn:
Zitat:

Für jede Verbindung mit SQL Server, auch für eine Verbindung von SQL Server Compact, ist eine Clientzugriffslizenz (Client Access License, CAL) für SQL Server erforderlich.
Oder nochmal langsam:

Für jede Verbindung zu einem SQL Server wird eine CAL benötigt, auch wenn diese Verbindung von einem SQL Server Compact erfolgt.

Niemand spricht hier von CALs für die Verbindung mit einem SQL Server Compact.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz