# Datenbank in Javaprogramm einbetten



## SuperSonik (24. September 2006)

Hi Leute,
kann mir jemand sagen ob es eine Möglichkeit gibt eine Datenbank 
direkt in ein Javaprogrammm mit rein zu kompilieren?
Bei Mysql gibt es zum Beispiel die libmysqld - Bibliothek.  - allerdings nur für C(++)
Gibt es etwas vergleichbares auch für Java?
Gruß,

     SuperSonik


----------



## tarantoga (24. Oktober 2006)

Hi,
falls du bis dato noch nicht fündig geworden bist.

schau dir mal den MySQL Connector/MXJ an auf der dev.mysql.com Seite.
(http://dev.mysql.com/downloads/connector/mxj/5.0.html)
Ist aber (glaube ich) nur für Serverseitige Anwendungen interessant.

Eher trifft deine Anforderung das Projekt von Peter Schäfer mysql-je - MySQL Embedded Library for Java (http://mysql-je.sourceforge.net/). 

Es soll auch noch Leute geben die an einer Umsetzung der libmysqld.dll zu einer native Library arbeiten, damit man Sie mit System.loadLibrary() einbetten kann.

Viele Grüsse
Volker


----------



## BLOEBAUM (25. Oktober 2006)

Hallo SuperSonic,

natürlich kannst du mysql auch in Java nutzen.

1.  Installiere dir mysql auf deinem Rechner
2.  Binde den Connector für deine Java Anwendung ein:
     Ich arbeite mit eclipse. Dort kann man über den Menüpunkt
     Projekt --> Eigenschaften beim Java-Erstellungspfad den Connector für mysql 
     über "externe Jar's hinzufügen" einbinden.
     Der connector von mysql hat die Endung .jar 

3.  Stelle in deinem Java Programm eine Verbindung zur Datenbank her
    Ich habe die Verbindung folgendermassen hergestellt:

		// Treiber laden:
		Class.forName("com.mysql.jdbc.Driver");

		// Datasource Konfigurieren
		MysqlDataSource mds = new MysqlDataSource();

		mds.setUser(GlobaleDaten.user);
		if (GlobaleDaten.kennwort == null)
		{
			mds.setPassword(JOptionPane.showInputDialog( "Kennwort eingeben" ));
		}
		else
		{
			mds.setPassword(GlobaleDaten.kennwort);
		}
		mds.setPortNumber(GlobaleDaten.portnumber);		// Pfad auf einen Rechner	
		mds.setServerName(GlobaleDaten.servername);		// IP Adresse meines Rechners
		mds.setDatabaseName(GlobaleDaten.databasename);	// Name der Datenbank

		try {
			GlobaleDaten.con  = mds.getConnection();
//			Autocommit deaktivieren
//			con.setAutoCommit(false);

//			Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
		}	
		catch (SQLException e)
		  {
		   while (e != null) {
		     System.err.println(e.toString());
		     System.err.println("SQL-State: " + e.getSQLState());
		     System.err.println("ErrorCode: " + e.getErrorCode());
//		     Datenbankantwort bei falschen Kennwort
		     if (e.getSQLState() == "08S01")
		     	{System.err.println("Servername: " +GlobaleDaten.servername +" unbekannt");}
		     if (e.getErrorCode() == 1049 || e.getSQLState() == "42000")
		     	{System.err.println("Datenbank: " +GlobaleDaten.databasename +" unbekannt");}		    		     
		     if (e.getErrorCode() == 1045 || e.getSQLState() == "28000")
		     	{System.err.println("Kennwort falsch für Benutzer " +GlobaleDaten.user
		     			+"\n Server: "    +GlobaleDaten.servername
		     			+"\n Datenbank: " +GlobaleDaten.databasename);}		     

		     e = e.getNextException();
		   }		
		   return false;
		  }
		return true;	
	}

Gruß

Harald


----------



## Flo<H> (25. Oktober 2006)

Hallo!
Eine weitere Alternative wäre noch die HSQL DB. Das ist eine in Java programmierte Datenbank, die man vollständig in Programme einbetten kann.

Links:
Wiki: HSQL DB
http://www.hsqldb.org/

MfG Flo


----------



## komatphil (30. Oktober 2006)

Hi, 

wenn du noch Hilfe benötigst schau dir mal die Seite an, die hat mir auch weiter geholfen:

http://www.galileocomputing.de/openbook/javainsel5/javainsel20_000.htm#Xxx999378


----------

