# Derby/H2 Welches u. Wie installieren/verwenden?



## ghost (22. Aug 2011)

Ich bin grad dabei mir ein kleines Adresstool zu erstellen. Anfangs dachte ich an ne MySQL - DB, aber die ist mir einerseits zu groß für so ein kleines Tool und andererseits will ich nicht jedesmal die DB extra starten müssen. Danach dachte ich an ne csv aber das ist wohl bei den vielen vorhanden DBs nicht nötig ( wie ich überzeugt wurde  ).

Nun wollte ich euch mal fragen welches Derby/H2 für mein Projekt ( kleines Adresstool, kleine DB, einfache Handhabung ) am besten wählen sollte und wie ich es installieren/verwenden kann?

Bzgl. dem installieren/verwenden hab ich natürlich schon gegoogelt und mich eingelesen aber iwie krieg ich da z.B. bei Derby schon unterschiedliche Infos z.B. nur derby.jar ins JDK Verzeichnis, Derby installieren, Umgebungsvariable setzen, ...

Btw. Java Version 1.6.0_23

Danke für eure Hilfe!


----------



## Marcinek (22. Aug 2011)

http://www.java-forum.org/java-faq-beitraege/122865-eingebettete-datenbanken.html


----------



## ghost (23. Aug 2011)

Da bei dem Link oben ein H2 - Beispiel dabei ist werd ich jetzt H2 verwenden. Als erstes hab ich auch H2 gedownloadet ( Konsole funzt ) und den Classpath gesetzt. 

Jetzt häng ich grad etwas am Verständnis, vielleicht könntet ihr mir da noch weiterhelfen wie das mit dem einbinden funktioniert. Bisher vermut ich das ( wenn man z.B. den Bsp-Code von obigem Link ) verwendet das Programm prüft ob bereits eine DB an der angegebenen Stelle verhanden ist und valls nicht wird eine DB erzeugt. Wird dann die erzeugte DB mit dem Programm "abgespeichert" ( eine Datei, zweite DB Datei in dem Verzeichnis )?

Achja und was mir grad noch kommt, kann man diese DB dann nur über das Programm öffnen/bearbeiten oder kann man darauf auch extern zugreifen ( wie z.B. bei mysql mit phpmyadmin ) z.B. über die H2 Konsole?


----------



## Antoras (23. Aug 2011)

Eine gute Alternative wäre noch db4o. Da objektorientiert ist es deutlich einfacher zu bedienen als SQL basierte DBMS.

Wo das DBMS die Daten ablegt kannst du selbst konfigurieren. Wenn die die Daten lokal auf dem Rechner liegen, dann kann natürlich auch jederzeit darauf zugegriffen werden. Für die IDEs gibt es z.B. schon fertige Plugins, die es einem erlauben, die Daten in den DBs zu manipulieren.


----------



## Guybrush Threepwood (25. Aug 2011)

ghost hat gesagt.:


> Jetzt häng ich grad etwas am Verständnis, vielleicht könntet ihr mir da noch weiterhelfen wie das mit dem einbinden funktioniert. Bisher vermut ich das ( wenn man z.B. den Bsp-Code von obigem Link ) verwendet das Programm prüft ob bereits eine DB an der angegebenen Stelle verhanden ist und valls nicht wird eine DB erzeugt. Wird dann die erzeugte DB mit dem Programm "abgespeichert" ( eine Datei, zweite DB Datei in dem Verzeichnis )?
> 
> Achja und was mir grad noch kommt, kann man diese DB dann nur über das Programm öffnen/bearbeiten oder kann man darauf auch extern zugreifen ( wie z.B. bei mysql mit phpmyadmin ) z.B. über die H2 Konsole?



Zur ersten Frage: Ja, es entsteht eine eigene Datei, in der die Daten abgelegt werden. Diese liegt beim Beispiel im User-Verzeichnis, da bei einem installierten Programm vom Betriebssystem meist nicht der Schreibzugriff auf das Programmverzeichnis erlaubt wird. Du kannst Die Pfade aber auch anders setzen.

Zur 2. Frage: Mit den entsprechenden Passwörtern und Pfadangaben sollte es in der H2-Konsole möglich sein, auf die Datenbank zuzugreifen. Ich habe es allerdings noch nicht ausprobiert.


----------



## Gast2 (25. Aug 2011)

H2 bringt von Haus aus schon nen kleines Webinterface mit:
Tutorial


----------



## bERt0r (25. Aug 2011)

Die h2 Datenbank wird dort gespeichert, wo du die URL angibst. z.b "jdbc:h2:C:\MeineH2DB" macht eine Datei MeineH2DB.db im Ordner C:\
Wenn du keinen absoluten Pfad eingibst, geht die URL vom User.home Verzeichnis aus.


----------



## Brainiac (27. Aug 2011)

Sorry fürs Hijacken, aber ich denke die Frage passt hier auch:
Kann ich bei H2 auch ne Datenbank im Programm jar File anlegen und die dann benutzen? Oder muss die immer in einem externen Verzeichniss liegen?


----------



## Gast2 (27. Aug 2011)

Nein kannst du nicht.
JAR Files können während sie benutzt werden nicht geschrieben werden.


----------



## Rin (2. Sep 2011)

ich habe schon eine art befragungs addresstool geschrieben und ich habe Java DB/derby verwendet und die Daten einfach mit JTable dagestellt installiert wird sie nur über jdbc driver (eine Datenbank erstellen über das Tool in Windows) und einfach in eclipse im projekt die derby.jar als library hinzufügen, und dann eine einfache Connection so in etwa:

```
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
	        Connection con = DriverManager.getConnection("jdbc:derby:NAME DER DATENBANK;create=true");
			System.out.println(con);
			con.close();
			check = false;
```
und die Tabellen händisch erstellen so in etwa:

```
CREATE TABLE tabelle1 (ID INT PRIMARY KEY,Colum1 VARCHAR(30), Colum2 INT, usw.)
```

hier noch zwei tutorial link: Using Java DB in Desktop Applications
Java DB Reference Manual

und die Referenzen: JavaDB / Derby Referenz



ich hoffe das dir das Hilft

Lg Rin


----------



## nrg (4. Sep 2011)

bERt0r hat gesagt.:


> Wenn du keinen absoluten Pfad eingibst, geht die URL vom User.home Verzeichnis aus.



das stimmt imho nicht ganz. eine vorangesetzte tilde packt die db in user.home. ein relativer pfad ist relativ zum current directory


----------

