# irgendwie neu für mich --- Java & geliebtes SQL



## micbur (18. Mai 2004)

Hallo, 

als Vorwarnung: ich habe keine Ahnung von Datenbanken und SQL. 

um euch gleich den Wind aus den Segeln zu nehmen: die FAQ dieses Forums habe ich durch, die erste Seite von JDBC habe ich mir auch angeschaut, im Internet habe ich - uff nicht mitgezählt - etwa 7 Tutorials durch. 

So, und nun komme ich zur beschreibung meines Problems. 
Ich habe mir ganz ordentlich den MySQL Server heruntergeladen. Es ist auch ein ODBC Treiber (MyODBC naheliegend!) installiert. Dann habe ich mir den "MySQL Connector/J" in die verwendenten JARs aufgenommen. Ich benutze Eclipse, daher kann ich mir das JAR irgendwohin kopieren und dann einfach jedem Projekt hinzufügen und benutzen. 

Auf dem SQL Server liegt also noch nicht eine Datenbank oder Tabelle, je nachdem wie man es nennen will. 
Und genau hier fängt mein Problem an. 

Ich benutze brav diesen Treiber: 

```
Class.forName("com.mysql.jdbc.Driver");
```
und wenn ich eine Verbindung herstellen möchte, geht das nach dem Schema

```
java.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://"+host+"/+database+"/");
```

Ich habe aber doch noch gar keine Datenbank, weil ich die erst in den folgenden Zeilen erzeugen will: 

```
java.sql.Statement stat = conn.createStatement();
java.sql.ResultSet rs = stat.executeQuery("CREATE TABLE student (name,matr);");
```


Ich stelle die Frage mal ganz naiv: Was nun? 
Im Pfad für getConnection kann ich keine datenbank angeben, weil sie noch nicht existiert. Und wenn sie existieren würde, dann kann ich sie nicht mehr erzeugen und würde so einen Fehler bekommen. 

Aber mal ganz nebenbei wüsste ich auch sonst nicht, wie ich da eine Datenbank hinzaubern sollte. 

Ich stehe ehrlich gesagt auf'm Schlauch! 


Ciao micbur


----------



## Gast (19. Mai 2004)

Hallo!

Da Du mysql verwendest, kannst Du Dich mit der mysql Datenbank verbinden, die eigentlich immer existieren sollte. Danach erstellst Du Deine Datenbank, trennst die Verbindung zur mysql Datenbank und verbindest Dich erneut mit Deiner soeben erstellten Datenbank.

Grüsse,
--Alex


----------



## AlArenal (19. Mai 2004)

Übrigens gibts es für MySQL eine Menge grafischer Frontends, für alle, die sich nicht im Client einen zurechttippen wollen. Unter anderem von den Schöpfern von MySQL gibts das Control Center...


----------



## micbur (19. Mai 2004)

@Alex
also irgendwie habe ich das nicht verstanden, was du da sagst. 

Ich habe ja noch winmysqladmin. Wenn ich dort reinschaue, dann sehe ich, dass es keine Tabell (Datenbank) gibt, daher würde ich sagen, dass es keine 'Standard'-Datenbank, die immer existiert, gibt. Es sei denn, ich weiß nur nicht, wie sie 'heißt'. 

Kannst du vielleicht das, was du meinst in ein paar Zeilen Code kurz exemplarisch darstellen, nicht dass ich etwas anderes verstehe als du meinst. Code ist da eindeutig. 


@AlArenal
Ja, ich nutze momentan mysqladmin und kann dort sehen, dass es keine Datenbank gibt. Ich kann ja heute Abend mal das SQL Control Center probieren. 

Danke. 


Ciao micbur


----------



## AlArenal (19. Mai 2004)

Die Datenbank mysql exisiert immer. Ohne startet das System gar nicht erst. In ihr befinden sich die Tabellen zur Rechteverwaltung für User, Datenbanken, Tabellen, etc.


----------



## Gast (19. Mai 2004)

Hallo micbur!

Welche Version von mysql verwendest Du denn?

So weit ich weiss, wird die "mysql" Datenbank vom mysql - Server für die Vergabe der Benutzerrechte verwendet und bei der Installation automatisch angelegt (zumindest, wenn man die mysql Variante mit Installer für Windows installiert). Ich habe allerdings gerade nachgesehen und bemerkt, dass die mysql - Datenbank bei der mysql-Version 4.1.1alpha offensichtlich nicht automatisch angelegt wird, was möglicherweise bei anderen Versionen ohne Installer auch der Fall sein könnte. Wie dem auch sei, muss bei einer vernünftigen Installation des Datenbankservers der zuständige Administrator die Zugriffsrechte einschränken/vergeben und damit automatisch die mysql - Datenbank anlegen, weshalb man davon ausgehen kann, dass diese auch existiert.

Dann kannst Du von Deinem Client eine Datenbank (z.B.: MeineDB) folgendermaßen anlegen:


```
Class.forName("<irgendein JDBC Treiber>");   
Connection con = DriverManager.getConnection("jdbc:mysql://IP_Adresse_des_DB_Servers/mysql");  
Statement stmt = con.createStatement();
stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS MeineDB");
con.close();
con = DriverManager.getConnection("jdbc:mysql://IP_Adresse_des_DB_Servers/MeineDB");
```


Wenn Du Dich nicht darauf verlassen willst, dass die mysql - Datenbank existiert, dann bleibt Dir nichts anderes übrig, als Deine gewünschte Datenbank per Skript oder mit einem Frontend für mysql anzulegen. Denn um Dich mit dem mysql - Server zu verbinden brauchst Du, wie Du ja bereits in Deiner Frage angedeutet hast, eine existierende Datenbank zu der sich Dein Client verbinden kann.

Grüsse, 
--Alex


----------



## Gast (19. Mai 2004)

Korrektur meines letzten Postings:
======================

Die mysql - Datenbank existiert, wie AlArenal bereits bemerkt hat, immer (auch bei der Version 4.1.1alpha), wird dort aber offensichtlich nicht mehr angezeigt. Wenn Du allerdings im mysql\data - Verzeichnis nachsiehst, solltest Du sie finden!

Grüsse, 
--Alex


----------

