# Datenbank erstellen werde einfach nicht schlau



## da Leon (15. Sep 2010)

Okaay vorerst: ich werde aus all den verschiedenen tuts nicht schlau und deshalb bitte ich euch mir alles genau zu erklären ohne wieder weiterzuverlinken!!!!!!!!

Ich will eine Datenbank erstellen mit Java... doch das Problem liegt bei dem jdbc sch***!
ich habe die es auf dem Desktop habe aber die jar mysql-connector-java-5.1.13-bin.jar
in mein Projekt importiert! 
und da fängt das Problem an!
wie mach ich weiter?? 
ich habe bisher dass:

```
public void createDB(Connection con) {
		try {
	    	String query = "create table Noten (Fach varchar(100))"; 
		    Statement stmt = con.createStatement();
			stmt.executeUpdate(query);
		} catch (SQLException e) {
			
		}
	}
```
Und jetzt muss ich die in der Connection einen Pfad angeben! und welcher???


----------



## da Leon (15. Sep 2010)

okay ich glaube ich habs geschafft!!
wo wird die db in windows gespeichert?


----------



## z-mon (15. Sep 2010)

Naben da Leon,

auch wenn du ungern verlinkt werden willst, aber um zu verstehen wie eine JDBC Connection richtig aufgebaut wird empfehle ich dir das Java MySQL connection Tutorial.
In der Funktion getName() findest du ein SQL String welcher an die DB geschickt wird. Diesen kannst du mit beliebigen SQL füllen. Beim Ausführen von SQL Code (nicht das Auslesen von Daten) nutzt du dann die Funktion query.executeUpdate.(sql).

Viel Spaß beim ausprobieren


----------



## da Leon (15. Sep 2010)

danke erstmal!
womit kann ich am besten so eine datenbank für java erstellen??
und wo muss ich die datenbank ablegen damit sie abgerufen werden kann?


----------



## z-mon (15. Sep 2010)

Das kommt ganz darauf an was für eine Datenbank du benötigst. Möchtest du eine Anwendung schreiben welche nicht nur von zu Hause Daten aus einer DB liest, ist wahrscheinlich MySQL die einfachste und kostengünstigste Variante. Ansonsten kannst du natürlich auf deinem Rechner (localhost) einen eigene MySQL Server installieren oder auch auf Access Datenbanken zurückgreifen. Ein Blick auf HSQL wird mit Sicherheit auch nicht schaden.

Grüße


----------



## Aldimann (16. Sep 2010)

Hi,

also ich würde jetzt erstmal ein wenig Grundsätzlicher an das Problem ran gehen...

Hast du überhaupt eine Datenbank Server installiert? So wie deine Fragen geklungen haben hörte sichd as eher nicht so an.

Wenn du schon einen installiert hast wäre es Interessant zu wissen welchen. MySQL, HSQL ...?




> und wo muss ich die datenbank ablegen damit sie abgerufen werden kann?



Das "ablegen" der Datenbank macht der Datenbank Server und er ist der mit dem du aus Java heraus sprichst.

Er speichert Daten und gibt sie wieder heraus.

Und auf welchem Rechner letztendlich dieser Datenbank Server läuft ist eigentlich vollkommen egal. In deinem Fall bietet es sich an ihn natürlich auf deinem Rechner aufzusetzen.

Wie scho von z-mon gesagt...


----------



## ARadauer (16. Sep 2010)

stell dir eine MySql Datenbank nicht wie eine Access Datei vor. Stell sie dir eher wie ein eigenständiges Programm an, das läuft und die Datenbank verwalltet. Dieses Programm kann man dann von aussen über jdbc ansprechen.


----------



## homer65 (16. Sep 2010)

da Leon hat gesagt.:


> okay ich glaube ich habs geschafft!!
> wo wird die db in windows gespeichert?



Da du den MySQL Connector benutzt nehme ich mal an, es geht um eine MySQL Datenbank.
Das ist ein komplexes Thema und nicht mal eben in 5 Minuten erklärt.
Wenn dich das Thema interessiert solltest du dir dafür auch entsprechend VIEL ZEIT nehmen.
Aber um auf deine Frage zurückzukommen, wo die Daten gespeichert werden.
Ein MySQL Server hatt eine Konfigurationsdatei. Wenn ich mich recht erinnere heißt sie unter Windows my.cnf oder my.ini.
Dort gibt es den Parameter datadir, der das Verzeichnis angibt, in dem die Daten abgelegt werden.


----------



## homer65 (16. Sep 2010)

Hab noch mal geguckt, wo das beschrieben ist:
MySQL :: MySQL 5.1 Referenzhandbuch :: 4.3.2 my.cnf-Optionsdateien


----------



## da Leon (16. Sep 2010)

okay danke an alle!


z-mon hat gesagt.:


> Naben da Leon,
> 
> auch wenn du ungern verlinkt werden willst, aber um zu verstehen wie eine JDBC Connection richtig aufgebaut wird empfehle ich dir das Java MySQL connection Tutorial.



Okay jetzt ist mir schon mehr klaar!

```
try {
		Class.forName("com.mysql.jdbc.Driver");
	} catch (ClassNotFoundException e) {
		System.exit(0);
	}
}
```

So das klappt und ich verstehs!
:applaus:


```
conn = DriverManager.getConnection("jdbc:mysql://" + dbHost + ":"
                                        + dbPort + "/" + database + "?" + "user=" + dbUser + "&"
                                        + "password=" + dbPassword);
```
so steht das im tutorial!

aber mir ist immer noch nicht klar woher er der pc wissen will wo er die Db herholen soll!??!!
dhHost = localhost

wo ist "localhost"


----------



## tfa (16. Sep 2010)

> wo ist "localhost"


Steht normalerweise unter/neben/auf dem Schreibtisch.

Wenn auf deinem Rechner der DB-Server läuft, kann sich der JDBC-Treiber mit diesem verbinden - eben auf localhost (der lokale Rechner).


----------



## ARadauer (16. Sep 2010)

client programme kommunzieren über adressen und ports. Also wenn du Google aufrufst ist der client dein pc und google.de port 80 (das 80 macht dein browser automatisch) ist der server.

auf deinem Rechner läuft ein Serverpogramm das den Zugriff auf die Datenbank ermöglicht, diese horcht auf einen gewissen port (dbPort). localhost ist immer der eigene Rechner.

Aber wo ist nun die Datenbank? Ja wo hast du sie den hininstlliert? Hast du dir xamp installiert? Wenn ja dann wahrscheinlich irgendwo in c:\apachefriends\xampp\mysql... aber finger weg davon, spiel da nicht damit rum, verändern kannst du das mit anderen tools. zb phpmyadmin oder sqlyog


----------



## tuttle64 (22. Sep 2010)

da Leon hat gesagt.:


> aber mir ist immer noch nicht klar woher er der pc wissen will wo er die Db herholen soll!??!!
> dhHost = localhost




Hallo da Leon, unter Windows werden die  hosts in einem File namens hosts geführt. Dort steht z.B. drin, welche IP-Adresse für den localhost gelten soll. Du kannst die IP-Adresse natürlich auch direkt beim jdbc-Aufruf angeben, z.B. "jdbc:mysql://127.0.0.1:3306/mydb". Damit gibt man auch an, für welche DB/Schema die Verbindung gelten soll, hier also für das Schema mydb. In meinem Fall läuft MySQL auf  dem Port 3306.


----------



## z-mon (23. Sep 2010)

da Leon hat gesagt.:


> aber mir ist immer noch nicht klar woher er der pc wissen will wo er die Db herholen soll!??!!
> dhHost = localhost
> 
> wo ist "localhost"



Hast du dies inzwischen verstanden? In der Variable dbHost steht quasi die Adresse wo der (in diesem Fall) MySQL Server installiert ist. In dem vorliegendem Beispiel ist der MySQL Server auf dem gleichen PC installiert, wo die Anwendung anschließend aufgerufen wird. Also auf dem localhost.
Willst du zum Beispiel auf eine Datenbank deines Hosters zugreifen, so muss hier die Adresse eingetragen werden. Wie die Adresse konkret lautet, steht in der Regel in den Konfigurationseinstellungen deines Anbieters. 

Schöne Grüße

::Added::
Solltest du Interesse haben einen MySQL Server lokal zu installieren, empfehle ich dir folgenden Artikel:
- MySQL Server lokal installieren


----------

