# Datanbank für Java-Programmierung



## publicmain (3. Jan 2016)

Hallo,

ich suche eine kostenlose Datenbank für den Privatgebrauch.

Ich habe bereits mysql und (eine wohl unbekannte Datenbank namens) mariadb heruntergeladen und installiert, aber ich hatte keine Ahnung, wie ich die Datenbanken öffne und benutze, darum habe ich sie wieder gelöscht.

Kann mir jemand eine kostenlose Datenbank nennen, die man einfach installiert und anspricht? Oder mir gegebenfalls sagen, wie man mysql installiert und benutzt?

Ich hätte gerne etwas wie hsqldb. Das konnte ich herunterladen und direkt über einen Manager öffnen und Tabellen erstellen etc. Natürlich möchte ich danach auch per Java auf die Datenbank zugreifen können.

Vielen Dank für eure Hilfe!


----------



## Dukel (3. Jan 2016)

MySql ist ein Client/Server DB System. Du installierst den Server und greifst mit diversen APIs oder Management Tools darauf (für MySql gibt es "MySql Workbench"). Btw. MariaDB ist ein fork von MySql.
Wieso nimmst du dann nicht hsqldb, wenn du das schon kennst?

Du solltest unterscheiden und wissen was du willst. MySql (alternativ: Postgresql, Oracle, MsSql,...) sind Serversysteme. Diese installiert man und greift mit einer API idR übers Netzwerk auf den Dienst zu.
Hsqldb (Alternativ: SqlLite, H2, MsSql Compact,...) sind Datenbanken, die zusammen mit einer Applikation genutzt werden.

Was hast du denn generell vor? Hast du die MySql Dokumentation angeschaut http://dev.mysql.com/doc/refman/5.7/en/ ?


----------



## mirisbowring (8. Jan 2016)

Was in Java für den Privatgebrauch recht Sinnvoll sein kann, ist DerbyDB (von Apache)...
Seit Java 5 oder so ist die Standart im JDK...
Diese DB kann man sowohl embedden (also in die Applikation einbinden, sodass kein DBServer gestartet werden muss), als auch als Netzwerk Datenbank nutzen. Dazu importierst du lediglich die Derby.jar(für embedded) oder DerbyClient (für Netzwerk) in dein Projekt.
Die Jars findest du unter:
Java>JDK>DB>lib
Anschließend öffnest du im Code eine Verbindung, benennst die Datenbank, lädst den "Treiber", etc.

Hier wird lediglich Java und eine Entwicklungsumgebung benötigt...


----------



## SeriousD0nkey (8. Jan 2016)

Was hast du denn genau vor? Willst du eine clientseitige Anwendung oder eine serverseitige Anwendung entwickeln?
Clientseitig würde ich, wie mein Vorposter schon geschrieben hat Derby bevorzugen (da von Haus aus schon dabei), willst du serverseitig programmieren, dann kannst du auch sehr gut MySQL nehmen (zum Testen kannst du dir XAMPP installieren, da ist dann ein Apache Webserver, MySQL und phpMyAdmin (grafische Webanwendung für die Datenbankverwaltung) dabei).


----------



## mirisbowring (8. Jan 2016)

@SeriousD0nkey stimmt...


----------



## Devox (13. Jan 2016)

Meine Idee wäre du nutzt SQLite. Brauchst keinen Server installieren, was dir bei deiner Unerfahrenheit aufjedenfall zugute kommt. 
SQLite ist lediglich eine Datei auf deinem Computer und bietet auch inzwischen eine recht Umfangreiche Funktionalität.


----------



## mirisbowring (13. Jan 2016)

Devox hat gesagt.:


> Meine Idee wäre du nutzt SQLite. Brauchst keinen Server installieren, was dir bei deiner Unerfahrenheit aufjedenfall zugute kommt.
> SQLite ist lediglich eine Datei auf deinem Computer und bietet auch inzwischen eine recht Umfangreiche Funktionalität.


Da finde ich Derby ehrlich gesagt etwas sinnvoller... (nicht schwieriger, ein Ordner statt einer Datei und etwas umfangreicher)...


----------



## Devox (14. Jan 2016)

mirisbowring hat gesagt.:


> Da finde ich Derby ehrlich gesagt etwas sinnvoller... (nicht schwieriger, ein Ordner statt einer Datei und etwas umfangreicher)...


Derby kenn ich gar nicht  Werd ich mir bei Gelegenheit mal anschauen...


----------



## lam_tr (15. Jan 2016)

Hallo mirisbowring,
ich weiss passt eventuell nicht zu dieser Topic, aber ich benutze momentan h2, aber was spricht den genau für Derby? Wird die Datenbank als Verzeichnis - Datei abgelegt?

Viele Grüße
lam


----------



## mirisbowring (15. Jan 2016)

@lam_tr ,
mit H2 habe ich mich nur flüchtig beschäftigt (habe aber in Erinnerung, dass sie Derby sehr ähnelt).

Wenn man mit Derby eine embedded Datenbank erstellt, wird diese beim Erstellen als Verzeichnis im Installationsordner (bzw. da wo die anderen Klassen liegen) abgelegt. Der Name des Verzeichnisses ist der selbe wie der der Datenbank.

Außerdem kann man erstmal nicht an die Daten ran, da die nicht nur Verschlüsselt sind, sondern auch merkwürdig in verschiedene Dateien aufgesplittet werden (ich habe das System dahinter noch nicht entdeckt), es werden also nicht eine Datei pro Tabelle, Spalte o.ä. erstellt. Das gewährt unter anderem ein gewissen Grad an Datenschutz (für meine Bisherigen Projekte sehr von Bedeutung).

Ein anderer Punkt ist, dass Derby wie bereits geschrieben in jedem JDK ab der Version 6 enthalten ist. Für mich ein weiterer Punkt, da ich des Öfteren die Geräte, auf denen ich programmiere, tausche, am selben Programm schreibe und ich bei einigen Geräten kaum Rechte habe. Hier importiere ich lediglich die Library, welche dann in das Jar bzw. exe, o.ä. mit integriert wird.

Um eine Verbindung zu öffnen, oder die Datenbank zu erstellen benötige ich nur 5 Zeilen (glaube ich), ist also schnell getan.

Da die Klasse nur 2 MB groß ist, und man ja nicht das ganze jar mitnehmen muss, sondern nur die verwendeten Klassen/Methoden, kann man von einer effizienten Speichernutzung (relevant für Microcomputer) reden.

Außerdem ist Derby (JavaDB) von der Syntax her sehr nah an Java dran...

Ich möchte nicht sagen, dass Derby die beste Datenbank ist (es gibt sehr viele andere gute und vielleicht auch bessere). Ich habe bisher mit einigen Datenbanken gearbeitet und bin letztendlich bei dieser geblieben. Als Netzwerk basierte Datenbank würde ich Derby allerdings nicht benutzen (da gibt es definitv bessere).

Wenn du mit H2 zufrieden bist, kannst du ruhig dabei bleiben 
Dennoch lohnt sich ein Blick auf Derby.


MfG

mirisbowring


----------



## buggy84 (16. Jan 2016)

Für kleine Anwedungen reicht Derby aus. Wenn sich der TS nicht mit Datenbanken auskennt, sollte hier zuerst angesetzt werden. Nachdem der Wissensstand ausreichend ist, kann man auch z.B. XAMP nehmen, und schnell und unkompliziert eine Datenbank aufzubauen und zu administrieren. 
Ohne sich mit dem Thema zu beschäftigen, scheitert das Projekt. Mit Datenbanken zu arbeiten ist eben nicht unbedingt das trivialste.


----------

