Java + Datenbank

st3-f

st3-f

Mitglied
Thread Starter
Dabei seit
22.12.2006
Beiträge
61
Reaktionspunkte
0
Hallo mac-Entwickler,

ich hab da mal eine kurze Frage. Ich habe vor ein Programm zu basteln/schreiben (in Java) in dem man zum Beispiel verschieden Belege oder aehnliches anlegen kann. Diese angelegten Daten sollten in einer Datenbank gespeichert werden..

Jetzt die eigentliche Frage: Welche Datenbank koennt ihr empfehlen? Welche ist leicht zu installieren / zu verwenden auf dem Mac?

Bin fuer jegliche Hilfe/Anregung offen.
Danke!
st3-f
 
Hallo mac-Entwickler,

ich hab da mal eine kurze Frage. Ich habe vor ein Programm zu basteln/schreiben (in Java) in dem man zum Beispiel verschieden Belege oder aehnliches anlegen kann. Diese angelegten Daten sollten in einer Datenbank gespeichert werden..
st3-f

- Apache Derby (http://db.apache.org/derby/)
- Db4o (http://www.db4o.com/)
- wenns was größeres werden soll, die üblichen Verdächtigen: mysql, postgresql, etc.
 
wenn das Programm auch woanders funktionieren soll,

empfehle ich das oben genannte DB4O (selber noch keine Erfahrungen)
oder HSQLDB (extrem klein und schnell).
 
Die Frage ist auch, ob du wirklich eine "Datenbank" brauchst. Welche Relationen hast du denn zwischen den Daten?
Evtl. könntest du auch einfach mit XML files wegkommen. ;)
 
Wenn auch viel zu gross für dein vorhaben, dafür aber nett ... Frontbase
 
Hi @ all,

erstmal Danke fuer die vielen Antworten. Da habe ich wohl die Qual der Wahl.

Also das Programm sollte (falls moeglich) unter Linux und Win laufen (in Mac OS X auch, aber da schreibe ich es ja).

Ob ich eine 'Datenbank' brauche, kann ich nicht sagen, ich denke mal, von der Anzahl der Daten waere das eher nicht erforderlich, aber fuer mein Wissen wuerde ich das ganze gerne in einer Datenbank speichern, also ich will lernen, wie ich zwischen Java und Datenbank eine Verbindung herstellen kann usw.

Wuerdet ihr mir jetzt von MySQL abraten, oder denkt ihr, dass das fuer einen, der noch relativ am Anfang der Java-Programierung steht, oder ist es einen Versuch wert? Was waere eure Empfehlung?

Danke schonmal fuer die Hilfe!!
st3-f
 
wenn du das Programm weitergeben willst, scheidet MySQL gänzlich aus.

Nimm eine von denen:
Derby
DB4O
HSQLDB

Alle 3 lassen sich (meines Wissens) auch innerhalb einer VM betreiben,
du kannst sie so perfekt integrieren, ohne dass im Hintergrund immer erst
die Datenbank gestartet werden muss.
 
wenn du das Programm weitergeben willst, scheidet MySQL gänzlich aus.

Nimm eine von denen:
Derby
DB4O
HSQLDB

Alle 3 lassen sich (meines Wissens) auch innerhalb einer VM betreiben,
du kannst sie so perfekt integrieren, ohne dass im Hintergrund immer erst
die Datenbank gestartet werden muss.

HSQLDB habe ich auch in dem Buch "Java ist auch eine Insel" gelesen. Wie laeuft das dann, dass es ohne etwas im Hintergrund zu starten geht? Naja, noch bin ich ja nicht so weit. Erstmal die DB dann zum Laufen bekommen. Danke fuer den Tipp.

Cheers
st3-f
 
Hallo,

ich würde dir PostgreSQL empfehlen, du kannst den Server unter MacOSX installieren und einen User anlegen, dann kannst du den Code als erstes Beispiel nehmen.

du musst den Code in JDBCKlasse.java speichern dann in der Konsole "javac JDBCKlasse.java" ausführen, dann musst du die ausführbare Klasse mit "java JDBCKlasse" starten

Alles, was großgeschrieben ist, musst dementsprechend ändern. Alles klar?

Code:
import java.sql.*;

public class JDBCKlasse {
	
    public static void main(String[] args) {
	Connection con = null;
	Statement stmt = null;
	ResultSet rs = null;
		
	try {
	    /** Schritt 1: Treiber registrieren */
	    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			
	    /** Schritt 2: Connection zur Datenbank herstellen */
	    con = DriverManager.getConnection("jdbc:postgresql://127.0.0.1/DATENBANKNAME", "POSTGRES_USERNAME",
	    "PASSWORD");
			
	   /** Schritt 3: Satement erzeugen */
	   stmt = con.createStatement();
			
	   /** Schritt 4: Anweisung direkt ausfuehren */ 
           // Beispiel Tabelle Books

	   rs = stmt.executeQuery("select author, title from Books");
		
	   /** Schritt 5: Ergebnis verwenden */
	   while (rs.next()) {
	       System.out.println(rs.getString("author") + " "
	   	       + rs.getString("title"));
           }
			
	 } catch (Exception e) {
	    	
	   } finally {
	       try {
		   /** Schritt 6: Nicht mehr benoetigte Resourcen freigeben */
		   if (rs != null)
		       rs.close();
		   if (stmt != null)
		       stmt.close();
		   if (con != null)
		       con.close();
				
	     } catch (Exception e) {
	       }
	  }
    }
}


greetz palman
 
und wie gibt er sein PostgreSQL-basierendes Programm weiter?
 
Hallo,

ich habe schon db4o benutzt und gute Erfahrungen gemacht. db4o ist eine Objektdatenbank, das ist deshalb schon von Vorteil weil dir die Konvertierung eines Objektes zu einer flachen Datenbanktabelle erspart bleibt. Einfach die Instanz des Objekts nehmen, in die DB einfügen und irgendwann mit gleichen Zustand wieder auslesen. Updaten und löschen geht natürlich auch.

db4o kann sowohl als Standalone Server laufen als auch in der VM deines Programms gestartet werden und dann als Child deiner VM arbeiten. Damit kannst du die Software weitergeben, ohne dass der User die DB installieren muss. db4o Bibliotheken werden dann einfach mit ins .jar-File gepackt - fertisch.

Viel Erfolg!
 
Hat vielleicht jemand einen Tipp, wo ich ein gutes Tutorial finden kann zu HSQLDB und Java?
Vielleicht hat ja jemand selbst was in seiner Sammlung!? Wenn nicht werde ich weitersuchen.

Danke schonmal!
st3-f
 
Warum nimmst Du nicht einfach SQLite? Die läuft unter Mac/Win/Linux und Du kannst die direkt in dein Projekt mit einbinden (also auch ohne dass der Anwender was installieren muß weitergeben). Wrapper für Java gibt's (wenn ich mich recht erinnere) und anzapfen kannst Du die DB entweder per Java, C oder SQL.
 
Oh, da kommt ja immer mehr dazu, die Qual der Wahl. Ich denke, ich werde es mal mit der HSQLDB versuchen, sofern ich ein gutes Tutorial finde - danke aber dennoch fuer die anderen Tipps!

Cheers
st3-f
 
Hallo,

ich würde dir PostgreSQL empfehlen, du kannst den Server unter MacOSX installieren und einen User anlegen, dann kannst du den Code als erstes Beispiel nehmen.

du musst den Code in JDBCKlasse.java speichern dann in der Konsole "javac JDBCKlasse.java" ausführen, dann musst du die ausführbare Klasse mit "java JDBCKlasse" starten

Alles, was großgeschrieben ist, musst dementsprechend ändern. Alles klar?

greetz palman

Nichts gegen PostgreSQL, habe es ja selbst auch installiert, aber nur um eine DB zu nutzen einen Benutzer anlegen etc pp. finde ich nicht grad angenehm.

Die genannten Beispiele eignen sich für die meisten Anwendungsfälle deutlich besser.
 
Mh hier hats ja schon einige Vorschläge gegeben. Ich denke, du musst dir erst im klaren sein, was du mit der DB bezwecken/lernen willst. Gehts dir darum, einmal in eine Datenbank reinzuschauen und in einer Entwicklung zu integrieren würde ich dir dringend raten, eine Relationale DB zu benutzen, da dies doch immer noch die weit verbreiteste Form von Datenbanken ist und dir da lerntechnisch am Meisten bieten würde. Eine Objektorientierte DB ist allerdings weitaus einfach zu handhaben. Rein aus lernaspekten würd ich dir MySQL schon empfehlen, da dies wohl den grossen DBs wie Oracle oder MSSQL am nächsten ist.

Falls du das noch nicht weisst. Die Java Datenbank API heisst JDBC, mit der du die jeweilige DB ansprechen und steuern kannst.
 
......Rein aus lernaspekten würd ich dir MySQL schon empfehlen, da dies wohl den grossen DBs wie Oracle oder MSSQL am nächsten ist.......

Also wenn es um Ähnlichkeit geht ist da PostgreSQL sehr viel näher an Oracle oder SQLServer dran als MySQL.

Die anderen genannten Datenbanken reichen aber völlig zum lernen aus, bis auf DB40 handelt es sich bei allen um relationale Datenbanken. Und wenn man einmal das Prinzip verstanden hat, wie man eine Datenbank anbindet, sie anspricht, Daten hineinschreibt und wieder ausliest ist es eh egal was man dann benutzt. Dann kümmert man sich nur noch um die sprachlichen Eigenheiten, der Rest ist Routine. Als Beispiel kannst Du super den früher genannten Quelltext nutzen, so funktioniert das praktisch mit allen Datenbanken.
 
Zurück
Oben Unten