# Datenbank anschließen



## Einklang. (10. Mai 2012)

Hallo,

kleine Anfängerfrage wie man eine Datenbank "anschließt":
Folgenden Code habe ich aus einem Buch:

```
public static Connection getConnection() throws SQLException, IOException
{
	Properties props = new Properties();
	FileInputStream in = new FileInputStream("database.properties");
	props.load(in);
	in.close();
	
	String drivers = props.getProperty("jdbc.drivers");
	if(drivers != null) System.setProperty("jdbc.drivers", drivers);
	String url = props.getProperty("jdbc.url");
	String username = props.getProperty("jdbc.username");
	String password = props.getProperty("jdbc.password");
	
	return DriverManager.getConnection(url, username, password);
}
```

Jetzt meine Frage, woher ich die Daten wie Username oder Passwort bzw die Datenbank an sich herbekomme. Es ist ja eine embedded Datenbank....! 

Ich steh da furchtbar auf dem Schlauch - dankeschön!


----------



## nillehammer (10. Mai 2012)

Das kommt drauf an. Wenn es eine bestehende Datenbank ist, dann frag den, der sie erstellt hat. Bei einer neu zu erstellenden kannst Du sie Dir aussuchen. Weiters hilft ein Blick in die Doku der verwendeten embedded Datenbank. Dort gibt es i.d.R. Infos zu Default-Usern/PWs. Bei HSQLDB ist es z.B. "sa"/"".


----------



## Einklang. (10. Mai 2012)

;-) 
Ja die berühmte Antwort "Schau in die Doku"........! :-D


----------



## Gast2 (11. Mai 2012)

Woher sollen wir die Zugangsdaten für ne Datenbank kennen die du erstellt hast? Oder ist deine Frage ne ganz andere?


----------



## Einklang. (11. Mai 2012)

Ich möchte eine neue Datenbank hier anbinden und die Frage ist nun wie das funktioniert.


----------



## Gast2 (11. Mai 2012)

Und welche DB?

Hier gibts nen kleines Tutorial für ne embedded h2 db:
Tutorial


----------



## Einklang. (11. Mai 2012)

Eine sql-Datenbank in java einbinden! Nix mit h2 und sonstigen Sachen 

Ich möchte damit dann nur Datensätze verwalten wie beispielsweise eine CD-Sammlung oder andere "Listen" eben. 

Ganz einfach ;-)


----------



## Gast2 (11. Mai 2012)

H2 ist eine sql Datenbank.

Mach folgende:
- Such dir eine Datenbank aus die du verwenden willst (da gibts viele)
- Schau dich auf der Seite nach Tutorials um
- Implementier was
- Bei Fragen meldeste dich hier nochmal


----------



## Einklang. (11. Mai 2012)

Dann kann mir vielleicht jemand anderes weiterhelfen wenn meine Frage missverstanden wird! 

Ich frage ja gerade danach, wie ich eine sql-Datenbank anbinde!
Ich habe mysql installiert, kann über die Eingabezeile (Commandzeile bzw mysql-prompt unter Win7) Datenbanken erstellen und bearbeiten und möchte nun Datenbanken in Java einbinden...!

Ich will keine Belehrungen was ich noch dazu machen kann oder anders, sondern einfach Erklärungen mit was wohin kommt und was wo eingegeben werden soll und muss usw.! 

Darum ist ein Forum ja da, damit erklärt wird und nochmal genauer auf die Frage und den Fragenden eingegangen werden kann. Einfach einen Link zu einer allgemeinen Anleitung zu setzen ist wie beim Vorbeigehen Befehle zu erteilen... ! 

So also die Voraussetzungen die ich habe sind ja bekannt, vielleicht kann mir jemand mitteilen was jetzt zu tun ist um das Ziel zu erreichen? 

besten Dank


----------



## Gast2 (11. Mai 2012)

Dann sag doch auch bitte gleich dass du eine mysql datenbank hast, das hätte viel Verwirrung erspart...

Du kannst per jdbc auf die Datenbank zugreifen. Dafür brauchst du nen entsprechenden Connector:
MySQL :: MySQL Connectors

und ein jdbc tutorial:
Trail: JDBC(TM) Database Access (The Java™ Tutorials)


----------



## Einklang. (11. Mai 2012)

Ja danke das sind interessante Seiten.

Wie gesagt suche ich aber nach Informationen, wie ich das jetzt mit den Datenbanken mache...! Den Java-Code habe ich ja schon aus dem Buch..... mal abgesehen davon, dass die Seiten sehr verwirrend sind, weil hier wieder ganz andere Dinge mitprogrammiert werden...!

Ich brauche also jetzt Informationen, was ich mit der Datenbank mache, damit diese embedded ist und in den gezeigten Code vom ersten Beitrag passt bzw verbunden ist - keinen anderen Code!

Wie komme ich an einen DB-User, an Passwort, wo oder wie soll ich die Datenbank erstellen...?

Ich poste mal den kompletten Code:



```
import java.sql.*;
import java.io.*;
import java.util.*;

/**
 * This program tests that the database and the JDBC Driver are correctly configured.
* @version 1.01 2004-09-24
* @author Cay Horstmann
**/

class TestDB
{
	public static void main(String args[])
	{
		try
		{
			runTest();
		}
		catch (SQLException ex)
		{
			for (Throwable t: ex)
				t.printStackTrace();
		}
		catch (IOException ex)
		{
			ex.printStackTrace();
		}
	}
	
/**
 * Runs a test by creating at able, adding a value, showing the table contents, and
 * removing the table. 
 **/
public static void runTest() throws SQLException, IOException
{
	Connection conn = getConnection();
	try
	{
		Statement stat = conn.createStatement();
		
		stat.executeUpdate("CREATE TABLE Greetings (Message CHAR(20))");
		stat.executeUpdate("INSERT INTO Greetings VALUES ('Hello World')");
		
		ResultSet result = stat.executeQuery("SELECT * FROM Greetings");
		if (result.next())
			System.out.println(result.getString(1));
		result.close();
		stat.executeUpdate("DROP TABLE Greetings");
	}
	finally
	{
		conn.close();
	}
}

/**
 * Gets a connection from the properties specified in the file database properties
 * @return the database connection
 **/

public static Connection getConnection() throws SQLException, IOException
{
	Properties props = new Properties();
	FileInputStream in = new FileInputStream("database.properties");
	props.load(in);
	in.close();
	
	String drivers = props.getProperty("jdbc.drivers");
	if(drivers != null) System.setProperty("jdbc.drivers", drivers);
	String url = props.getProperty("jdbc.url");
	String username = props.getProperty("jdbc.username");
	String password = props.getProperty("jdbc.password");
	
	return DriverManager.getConnection(url, username, password);
}

}
```

Das ist nun der allgemeine Code, in den ich nun eine eigene Datenbank einbinden möchte.


----------



## Gast2 (11. Mai 2012)

> Ich brauche also jetzt Informationen, was ich mit der Datenbank mache, damit diese embedded ist


Du kannst nicht einfach so irgend eine Datenbank embedded machen. Bei einer Standard MySql Datenbank gibts afaik keinen embedded mode, aber vielleicht irre ich mich da auch...

Die oben verlinkte H2 Datenbank hat einen embedded mode und lässt sich sehr einfach einbinden, siehe Tutorial.


----------



## Einklang. (11. Mai 2012)

Wir kommen hier heute und jetzt wohl nicht richtig weiter! Ne Pause tut gut!


----------



## nillehammer (11. Mai 2012)

Obwohl Fragen unpräzise gestellt, sich über dennoch gut gemeinte Antworten beschwert und jetzt beleidigt ins Bett gegangen, versuche ich auch noch mal etwas Licht ins Dunkel zu bringen.
*Embedded Datenbank:* Damit meint man im Java-Umfeld Datenbanken, die *nicht extra installiert* werden müssen, sondern, die man als Bestandteil der Java-Anwendung ausliefern kann. Die Prominentesten sind: HSQLDB, H2, Derby. MySql ist ein extra Datenbankserver (so wie Oracle und MS-SQL auch). Also gerade *nicht* embedded.



> Ich habe mysql installiert, kann über die Eingabezeile (Commandzeile bzw mysql-prompt unter Win7) Datenbanken erstellen und bearbeiten und möchte nun Datenbanken in Java einbinden...!


Ok, daraus schließe ich, dass Du schon 
	
	
	
	





```
CREATE DATABASE xyz
```
 gemacht hast. Die Tabellen erzeugst Du ja im Code. D.h. Du brauchst einen DB-User mit entsprechenden Rechten. Das geht bei MySQL so: 
	
	
	
	





```
CREATE USER 'Einklang'@'localhost' IDENTIFIED BY 'mypass';
```
 Damit darf ein User namens Einklang sich von localhost aus verbinden, wenn der das Passwort _mypass_ eingegeben hat. Damit sollte die Ursrpungsfrage nach Username/Passwort beantwortet sein. Um den User mit Rechten auszustatten, musst Du 
	
	
	
	





```
GRANT
```
-Befehle benutzen. Für Tests gibst Du dem Nutzer am besten Alle Rechte und zwar so: 
	
	
	
	





```
GRANT ALL ON xyz.* TO 'Einklang'@'localhost';
```
 _xyz_ ist natürlich der Name der Datenbank, die Du erstellt hast.

Das wär's fürs erste. Die Werte für Driver, jdbc-URL usw. stehen in den _database.properties_. Hast Du die schon gepflegt? Oder war die evtl. bei dem kopierten Beispielcode dabei? Falls nicht, soweit klar, was das properties sind und wo die herkommen? Falls nicht, frag bitte *NETT* nach und wir machen weiter...


----------



## Camino (11. Mai 2012)

Hmm, du darfst jetzt nicht anderen die Schuld geben, wenn du erst nach einigen Postings damit rausrückst, was für eine Datenbank du eigentlich vorliegen hast. Und du solltest dich erst mal mit den Grundlagen der Datenbank befassen, also zumindest wie du User, Datenbanken und Tabellen anlegst. Danach sind dann auch noch einige Kenntnisse in Java zu den Datenbanken (JDBC, Connection, Statement, ResultSet...) sowie SQL notwendig.

In dem von dir genannten Beispielcode liegen die Daten zur Datenbank (Treiber, URL, User, Passwort) in einem Properties-File ("database.properties"), welches eingelesen und die Daten für die Datenbankverbindung genutzt werden. Also, so allgemein - wie du es nennst - ist dieser Code dann auch wieder nicht. Du musst natürlich auch einen User (mit Passwort und Privilegien) angelegt haben, eine Datenbank und Tabellen erstellt haben, die du dann mit Daten füllen, abfragen und auch wieder ändern kannst.

Also, grob würde ich sagen, brauchst du folgendes:
Auf der Datenbank-Ebene:
1. ein Datenbank-System (in deinem Fall ist wohl MySQL schon vorhanden)
2. dort einen User (mit Passwort und bestimmten Privilegien/Rechten; je nachdem was du machen willst)
3. dort dann eine Datenbank mit einer oder mehreren Tabellen anlegen

Für deine Java-Anwendung:
1. einen JDBC-Treiber für deine Datenbank
2. eine Verbindung (Connection) zur DB herstellen mit den benötigten Daten (Treiber, URL, User, Passwort)
3. ein Statement mit SQL erstellen und über die Connection an die DB schicken
4. evtl. ein ResultSet empfangen und in deiner Anwendung verarbeiten

Du siehst, es ist nicht so einfach mit ein bisschen Beispielcode getan, so wie du meinst. Diese Infos kannst du in vielen Tutorials nachlesen.



Einklang. hat gesagt.:


> Ich habe mysql installiert, kann über die Eingabezeile (Commandzeile bzw mysql-prompt unter Win7) Datenbanken erstellen und bearbeiten und möchte nun Datenbanken in Java einbinden...!





Einklang. hat gesagt.:


> Wie komme ich an einen DB-User, an Passwort, wo oder wie soll ich die Datenbank erstellen...?



Hmm, einmal schreibst du, du kannst schon Datenbanken erstellen und bearbeiten, über die Commandzeile bei Windows. Welche Daten für User und Passwort bzw. Datenbankverbindung gibst du denn dort an? Das müssten ja die gleichen sein, die du auch für deine Javaanwendung brauchst.


----------



## Einklang. (11. Mai 2012)

Ok dann bliebe also nach wie vor die Angaben der Datenbank für Java...! 

Genau also die Punkte 1. und 2. für die Java Anwendung möchte ich ja wissen... !
JDBC Treiber ist wohl derby.......! 
Url ist ?

Als User und Passwort verwende ich testweise jetzt mal meinen root und werde das wie Nillehammer beschrieben hat dann später ändern.


Danke


----------



## nillehammer (11. Mai 2012)

> JDBC Treiber ist wohl derby.......!


Der JDBC-Treiber muss zum verwendeten Datenbankserver passen. Du verwendest MySQL. Also muss der JDBC-Treiber von denen kommen. Den Download-Link hat EikeB in Post #10 bereits genannt.


> Url ist ?


Die JDBC-Url ist auch abhängig von verwendeten Datenbanksystem und folgt einem bestimmten Schema. *Das* könntest Du doch wirklich selbst rausfinden (Google "jdbc url mysql") oder ist das schon wieder zu viel verlangt?


----------



## Camino (11. Mai 2012)

Na, jetzt hast du ja alle nötigen Infos bzw. Links dazu. Bin mal gespannt, ob du das jetzt hinkriegst. Falls noch konkrete Nachfragen da sind, musst du dich halt nochmal melden. Im Internet findest du auch jede Menge Beispiele und Tutorials. Auch hier in der FAQ gibt es einen Punkt zu MySQL.


----------



## Einklang. (11. Mai 2012)

So besten Dank, ich werde mir die Details dann doch zusammensuchen (müssen)!



> Na, jetzt hast du ja alle nötigen Infos bzw. Links dazu



Genau darum ging es mir, eben NICHT aus verschiedenen Quellen suchen zu müssen, sondern eine kompetente Hilfe bei einer ganz konkreten Anleitung zu bekommen....! ;-)

Wie auch immer. was Lehren und Lernen betrifft sind wir eben in einer Bananenrepublik - was lern ich hieraus - nicht wie eine Datenbank angeschlossen wird, sondern dass ich lieber selbst rumprobier! 

Ich frag mich wirklich was so schwer ist, ganz konkret zu beschreiben, wie man eine Datenbank anschließt, mit allen Vorarbeiten die dazu nötig sind!? ;-)
Ich mein, der Anfang war ja dann schon gemacht, mit dem groben ÜBerblick...!


----------



## Camino (11. Mai 2012)

Einklang. hat gesagt.:


> So besten Dank, ich werde mir die Details dann doch zusammensuchen (müssen)!



Ja, ein bisschen Eigenarbeit ist da auch oft gefragt... Und meistens auch garnicht so schwierig. Du kannst es dir ja zusammen suchen und umsetzen und dann nochmal hier rein posten, falls es damit Probleme gibt.



Einklang. hat gesagt.:


> Genau darum ging es mir, eben NICHT aus verschiedenen Quellen suchen zu müssen, sondern eine kompetente Hilfe bei einer ganz konkreten Anleitung zu bekommen....! ;-)


Willst du selbst was lernen oder es nur vorgesetzt bekommen? Die Hilfe hier ist sehr kompetent, aber ein bisschen bewegen musst du dich schon selbst.



Einklang. hat gesagt.:


> Wie auch immer. was *Lehren und Lernen* betrifft sind wir eben in einer Bananenrepublik - was lern ich hieraus - nicht wie eine Datenbank angeschlossen wird, sondern dass ich lieber selbst rumprobier!


Du bist schon ganz schön undankbar für die vielen Tipps und Links, die du hier bekommen hast. Da brauchst du dich nicht wundern, wenn du hier irgendwann keine Hilfe mehr bekommst...



Einklang. hat gesagt.:


> Ich frag mich wirklich was so schwer ist, ganz konkret zu beschreiben, wie man eine Datenbank anschließt, mit allen Vorarbeiten die dazu nötig sind!? ;-)
> Ich mein, der Anfang war ja dann schon gemacht, mit dem groben ÜBerblick...!


Dein "gemachter Anfang" war ja schon sehr unpräzise, indem du ewig gebraucht hast, erst mal überhaupt zu sagen, welche Datenbank gemeint ist und dass die auch schon vorhanden ist. Daraus lässt sich schliessen, dass du noch sehr wenig Erfahrung und Ahnung mit Datenbanken hast und dir erst mal die Grundlagen aneignen solltest. Bei konkreten NAchfragen wird dir ja auch gerne weiter geholfen...


----------



## Einklang. (11. Mai 2012)

Es gibt zig Möglichkeiten Fehler zu machen und bei jedem Fehler stolper ich dann hier rein!? :toll::toll:

Zudem sind die Anleitungen immer verschieden programmiert - weswegen ich auch eine ganz konkrete Anleitung haben wollte - auch als Beispiel für alle anderen hier sichtbar! 




> Ja, ein bisschen Eigenarbeit ist da auch oft gefragt



Ne warum - zur Erklärung einmal bitte komplett und ausführlich, dann selber machen!  Einfach ein paar Links vor die Füße werfen und sagen "mach mal" ist halt schon abenteuerlich!


----------



## Camino (11. Mai 2012)

Ja, aber die Grundlagen musst du dir halt mal selbst raussuchen und durchlesen (obwohl du selbst das sogar teilweise hier geliefert bekommen hast). Wenn du dann konkret ein Problem mit irgendwas hast, dann schreibst du das hier rein und bekommst Hilfe. So einfach.


----------



## Einklang. (11. Mai 2012)

Dann brauch ich im Forum nicht fragen, weil ich mir die zwei dicke Bücher von SUN gekauft hab auf Englisch und daraus ist das Codebeispiel......!

;-) 

Darum frag ich ja hier im Forum, dass ich nicht ausprobieren muss, sondern jemand konkret sagt, wie es läuft! Naja anscheinend nicht... habe ich wohl falsche Erwartungen gehegt!


----------



## nillehammer (11. Mai 2012)

> Ich frag mich wirklich was so schwer ist, ganz konkret zu beschreiben, wie man eine Datenbank anschließt, mit allen Vorarbeiten die dazu nötig sind!?
> Ich mein, der Anfang war ja dann schon gemacht, mit dem groben ÜBerblick...!


Schwer ist daran garnichts. Aber warum Dinge wiederholen, die woanders sehr gut beschrieben sind? Dafür haben wir das Internet, wo alles nur einen Klick weit entfernt ist.


> Ne warum - zur Erklärung einmal bitte komplett und ausführlich, dann selber machen! Einfach ein paar Links vor die Füße werfen und sagen "mach mal" ist halt schon abenteuerlich!


Ist es eben nicht! Da gehst Du mit einer falschen Erwartungshaltung an das Thema ran. Die Links sind durchaus mit Bedacht gewählt. Und da wiederhole ich mich: "Warum etwas wiederholen, was woanders sehr gut beschrieben ist?"


----------



## Camino (11. Mai 2012)

Einklang. hat gesagt.:


> Es gibt zig Möglichkeiten Fehler zu machen und bei jedem Fehler stolper ich dann hier rein!? :toll::toll:
> 
> Zudem sind die Anleitungen immer verschieden programmiert - weswegen ich auch eine ganz konkrete Anleitung haben wollte - auch als Beispiel für alle anderen hier sichtbar!
> 
> Ne warum - zur Erklärung einmal bitte komplett und ausführlich, dann selber machen!  Einfach ein paar Links vor die Füße werfen und sagen "mach mal" ist halt schon abenteuerlich!



Sorry, aber ich hab mir gerade diesen Thread nochmal von vorne angeschaut. Es gab nicht nur Links, die dir vor die Füsse geworfen wurden, sondern Tipps und Nachfragen, weil du dich so unpräzise ausgedrückt hattest. Und wenn du keine Eigenarbeit leisten willst, sondern von anderen alles nur ausgearbeitet und vorgesetzt haben möchtest, dann bist du vielleicht wirklich falsch hier. Und wenn du das nicht einsehen möchtest, dann kann ich dir auch nicht weiterhelfen und beende das hier halt. Hab ja auch selbst noch anderes zu tun...


----------



## Camino (11. Mai 2012)

Einklang. hat gesagt.:


> Darum frag ich ja hier im Forum, *dass ich nicht ausprobieren muss*, sondern jemand konkret sagt, wie es läuft! Naja anscheinend nicht... habe ich wohl falsche Erwartungen gehegt!


Das hört sich ein bisschen nach Faulheit und Bequemlichkeit an. Programmieren lernt man durch programmieren! Da musst du dich halt einfach auch mal hinsetzen und ausprobieren, schauen was passiert und wo Fehler auftreten und die dann konkret benennen und nach Hilfe fragen.


----------



## Einklang. (11. Mai 2012)

Also ich bin kein Schüler der Nachmittags bissl am PC rumspielt...! 

Ich betreibe einen Onlineshop mit Mitarbeitern und habe noch ein Fernstudium, da möchte ich einfach Lösungen haben die ich dann selber ausprobieren kann....! Ich hatte einen Student Informatik eingestellt, der sich dann nicht gemeldet hat...! Deshalb such ich jetzt nach Lösungen, wie ich so eine Datenbank denn nun anschließe - dass ich damit dann arbeiten kann und auf der Grundlage dann mein kleines Programm programmiere....! 

Wenn wir uns so gegenseitig unterrichten braucht sich doch keiner wundern dass wir eine Bananenrepublik sind... wir haben von Lernen und Lehren überhaupt keine Ahnung! Ich studiere Psychologie mit Konzentration auf Lernen und Entwicklung... also ich weiß wovon ich rede und ich wunder mich stark warum nicht einfach jemand erklärt wie das nun funktioniert und immer auf "selber machen" gepocht wird - klar kann man sich das suchen, aber ich kann mir auch ein Boot bauen oder die Schnürsenkel selber herstellen oder die Kleidung selber weben und dafür ne Horde Schafe halten! Weil man selbst das Rad nicht neu erfinden muss da es schon jemand anderes hat kann der andere dann das Auto erfinden - das ist Kultur, darauf bauen Gesellschaften...!


----------



## maki (11. Mai 2012)

*verschoben*

Wenn so wenig Eigeninitiavie wie hier gezeigt wird, passt das höchstens noch zu  Hausaufgaben.

Lesenwert: http://www.java-forum.org/hausaufga...eim-erschleichen-loesungen-fuer-aufgaben.html

Da ansonsten alles gesagt wurde und sosnt wohl nix neues mehr kommt schliesse ich hier.

*geschlossen*


----------



## SlaterB (11. Mai 2012)

Einklang. hat gesagt.:


> Ich hatte einen Student Informatik eingestellt, der sich dann nicht gemeldet hat...! Deshalb such ich jetzt nach Lösungen, wie ich so eine Datenbank denn nun anschließe - dass ich damit dann arbeiten kann und auf der Grundlage dann mein kleines Programm programmiere....!



du hättest dies für 500 Euro Gehalt bekommen und willst es als Alternative hier umsonst?
genau das ist einer der Gründe warum es hier nicht funktioniert,

niemand stellt stundenlang ein komplettes Beispiel zusammen, sondern postet höchstens 5 Min. Links oder kleine Codes oder beantwortet einzelne Detailfragen,
die kompletten Beispiele sind entweder schon vorhanden, in den Links, oder kosten dick Geld für die individuelle Zeit


----------

