# MySQL Datenbanktabelle erstellen



## maxth (2. Jun 2009)

Hallo Leute, 
ich hab mal eine Frage zum erstellen einer MySQL Datenbanktabelle per Java Programm.
In welche Syntax muss dieses erfolgen, eine Verbindung zum Datenbank System steht.
Habe diese Auch mit select Befehlen getestet.


Vielen Dank im vorraus.


```
import java.sql.*;

public class CreatTable
{
 static Connection con;
 static Statement statement;
 static ResultSet result;
 
 public static void main (String args[]){
	 
	 new CreatTable();
	 
 }

 public void DatenbankAbfrage()
 {
  try
  {
   Class.forName("com.mysql.jdbc.Driver").newInstance();
  }
  catch (Exception e)
  {
   System.out.println("Treiber Fehler");   
  }

/** --------------------------------------------------------------------------------------- **/
/** *************************************************************************************** **/
/** --------------------------------------------------------------------------------------- **/
 
  try 
  {
   con = DriverManager.getConnection("jdbc:mysql://localhost/mkb","root", "");
  } 
  catch (SQLException e) 
  {
   System.out.println("Connection Fehler: " +e.getMessage());
  }

/** --------------------------------------------------------------------------------------- **/
/** *************************************************************************************** **/
/** --------------------------------------------------------------------------------------- **/
  
  try 
  {
   statement = con.createStatement();
  } 
  catch (SQLException e) 
  {
   System.out.println("Error creating statement: " + e.getMessage());
  }
  
/** --------------------------------------------------------------------------------------- **/
/** *************************************************************************************** **/
/** --------------------------------------------------------------------------------------- **/
  
  try 
  {
   PreparedStatement pstmt =
   con.prepareStatement[COLOR="Red"]("CREATE TABLE mkb, Wohnung1 (Wname TEXT NOT NULL) ENGINE = MYISAM");[/COLOR]
   result = pstmt.executeQuery();
  
  }
  catch (SQLException e) 
  {
   System.out.println("Error prepared select-statement: " + e.getMessage());
  }
 }
}
```


----------



## Gast2 (2. Jun 2009)

Moin,

Deine Klasse ist völliger murks ... da stimmt nicht mal Grundlegendes Java ... ich nehme mal nur alles für SQL raus


```
public class CreatTable
{

 public static void main (String args[]){
	 new CreatTable();
 }

 public void DatenbankAbfrage()
 {
 }
}
```

hier wird nie etwas passieren


```
con.prepareStatement[COLOR="Red"]("CREATE TABLE mkb, Wohnung1 (Wname TEXT NOT NULL) ENGINE = MYISAM");
```

der Query ist generell falsch

hand, mogel


----------



## maxth (2. Jun 2009)

hallo, 

danke für diese Freundliche Antwort.

Mit SQL kenne ich mich aus, hatte es schließlich schon in meinem Studium und das auch sehr umfassend, meine Frage war darauf bezogen, wie ich den "CREAT TABLE" einbinde, mein usprünglicher Code sah anderst aus, und enthielt eine Select Anfrage, ich wollte aus TEST zwecken, versuchen eine Tabelle anzulegen, was mir leider nicht gelungen ist. 
Und ich denke schon das in Java die Grundkenntnisse besitze. 
Dachte ich könnte den Code umwandeln. Vielleicht habe ich auch falsch gedacht.

----------------------------------------
 Und das mit dem LINK, ist echt eine Frechheit.


----------



## Gast2 (2. Jun 2009)

maxth hat gesagt.:


> Und ich denke schon das in Java die Grundkenntnisse besitze.


dann sollte Dir ja in der gekürzten Fassung aufgefallen sein wieso Deine Datenbank keine neue tabelle enthält



> Und das mit dem LINK, ist echt eine Frechheit.


ick finde den c001 ... der löst gleich Dein CREATE TABLE Problem ... der Query funktioniert so auch nicht ... das sollte Dir aber eine SQL-Exception auch sagen


----------



## ice-breaker (2. Jun 2009)

maxth hat gesagt.:


> Mit SQL kenne ich mich aus, hatte es schließlich schon in meinem Studium und das auch sehr umfassend



"Mal gehabt" haben und können, sind, wie du siehst, 2 Paar Schuhe.
Es fehlt die Datentype-Definitionen und von mkb, und die Klammer muss direkt hinter das Create Table.


----------



## maxth (4. Jun 2009)

ja ich seh es ja ein, ein versuch es noch mal neu, ohne ein schlecht zusammen gebastelten code.

Die Veranstaltung hieß Datenbanksysteme, abgeschlossen mit 2,0.

Ist ja auch egal, mein Problem löst sich wahrscheinlich auch nicht von selbst.

In diesem Teil, würde ich gerne eine neue Tabelle anlegen, 
aber er meckert noch mit dem SQL Befehl rum. Es geht mir eigentlich nur darum, 
wie ich den SQL schreibe damit, ich es einbinden kann.

Vielleicht kennt jemand eine Seite die mir das gut erklärt.

Vielen Dank im vorraus.


```
try{
	  String query = ("CREAT TABLE Wohnung (name(char))");
	  statement.executeUpdate(query); 
	  
  }
 catch(SQLException e){
	 System.out.println(e.getMessage());
	 
 }
```


----------



## maki (4. Jun 2009)

> Vielleicht kennt jemand eine Seite die mir das gut erklärt.


Wie wäre es denn mit der offiziellen MySQL Dokumentation?

MySQL :: MySQL 5.1 Reference Manual :: 12.1.17 CREATE TABLE Syntax


----------



## maxth (4. Jun 2009)

Oha,  Danke da war ich noch nicht drauf.

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    { LIKE old_tbl_name | (LIKE old_tbl_name) }


heißt das, meine neue Tabelle wird die komplette Eigenschaft meine vorherigen Tabelle übernehmen?

hab ich das so richtig verstanden???:L


----------



## ice-breaker (4. Jun 2009)

maxth hat gesagt.:


> hab ich das so richtig verstanden???:L


nein, du hast die Option ja nicht genutzt, in eckige Klammern stehen optionale Parameter.

relevant für deinen query ist:

```
VARCHAR(length)[CHARACTER SET charset_name] [COLLATE collation_name]
```


----------



## maxth (4. Jun 2009)

also in meinem Fall würde das mit LIKE so aussehen.

Ich hab mir eine Standardtabelle erstellt, die für mich alle wichtigen referenzen besitzt. 



```
try{
	  String query = ("creat table neueWohnung LIKE wohnung");
	  statement.executeUpdate(query); 
	  
  }
 catch(SQLException e){
	 System.out.println(e.getMessage());
	 
 }
```


----------



## maxth (4. Jun 2009)

so, das hat jetzt alles wunderbar funktioniert ,
endlich, und was für ein dummer fehler.


----------

