Overview
Im vorherigen Kapitel haben wir eine MySQL-Tabelle mithilfe von phpMyAdmin erstellt. Wollen wir jedoch aus unserem Java-Programm heraus Tabellen erstellen, können wir nicht auf phpMyAdmin zurückgreifen, sondern müssen selbstständig coden. Wir zeigen dir in diesem Tutorial, wie das geht.
// Schnelles Code Beispiel
String sql = "CREATE TABLE tabelle (id INTEGER, name VARCHAR(20), betrag DECIMAL(6,2));";
try {
Statement stm = con.createStatement();
stm.execute(sql);
} catch (SQLException e) {
System.out.println(e);
}
Wir haben zu Beginn unserer MySQL-Tutorial-Reihe bereits gesehen, wie wir eine MySQL-Tabelle mithilfe von phpMyAdmin erstellen.
phpMyAdmin ist ein klasse Tool, das uns die Arbeit mit MySQL-Datenbanken enorm erleichtert. Wollen wir jedoch aus unserem Java-Programm heraus Tabellen erstellen, können wir nicht auf phpMyAdmin zurückgreifen, sondern müssen selbstständig coden.
Den SQL-String zum Erstellen einer MySQL-Tabelle bauen so zusammen:
Hinter den Schlüsselwörtern CREATE TABLE folgt der Name der neu zu erstellenden Tabelle. Anschließend werden in runden Klammern die Bezeichnungen der Spalten mit den dazugehöhrenden Datentypen kommasepariert aufgelistet.
Ein konkretes Beispiel sehen wir hier:
static Connection con;
public static void main(String[] args) {
/*
Datenbankverbindung herstellen...
*/
String sql =
"CREATE TABLE meine_tabelle (id INTEGER, name VARCHAR(20), betrag DECIMAL(6,2));";
try {
Statement stm = con.createStatement();
stm.execute(sql);
} catch (SQLException e) {
System.out.println(e);
}
}
Der SQL-String wird in Zeile 9-10 zusammengebaut und als Statement in Zeile 14 an die Datenbank geschickt.
Dort wird eine Tabelle namens meine_tabelle mit den Spalten id, name und betrag für Werte mit unterschiedlichen Datentypen erstellt.
Sollte die Syntax aus des SQL-Strings fehlerhaft sein oder die Tabelle bereits existieren, wird eine SQLException geworfen, die dann durch Zeile 16 am Bildschirm ausgeben wird.
Zum Erstellen einer Tabelle müssen wir also immer auch über die Datentypen der einzelnen Spalten Bescheid wissen. Wir können hier kein vollständiges MySQL-Tutorial geben, aber folgende Datentypen solltet du für den Anfang auf jeden Fall kennen:
| Datentyp | Zweck | Beispiel |
|---|---|---|
| INTEGER | Ganzzahlen | id INTEGER |
| DECIMAL(a,b) | Dezimalzahlen | preis DECIMAL(7,2) |
| VARCHAR(x) | Zeichenkette mit Beschränkung (x) | name VARCHAR(30) |
| TEXT | Längere Zeichenketten | beschreibung TEXT |
| BOOLEAN | boolesche Datenwerte | verfuegbar BOOLEAN |
| DATE | Werte für Datum | geburtsdatum DATE |
Um die Struktur einer angelegten Tabelle in Java angezeigt zu bekommen, ist die SQL-Abfrage SHOW COLUMNS FROM sehr praktisch:
String sql = "SHOW COLUMNS FROM tabelle";
Auf unser Beispiel angewandt sieht der vollständige Code dazu so aus:
try {
Statement stm = con.createStatement();
String abfrage = "SHOW COLUMNS FROM meine_tabelle";
ResultSet rs = stm.executeQuery(abfrage);
while(rs.next()){
System.out.println(rs.getString(1) + " " +
rs.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
}
Das Ergebnis der SQL-Abfrage wird in einem Objekt vom Typ ResultSet gespeichert. Diese werden dann mit der while-Schleife und der Methode rs.next() zeilenweise ausgelesen:
Als Ergebnis sehen wir alle Spalten mit den dazugehörigen Datentypen angezeigt:
id int(11)
name varchar(20)
betrag decimal(6,2)
Fügen wir nun einen Datensatz in die oben erstellte Tabelle meine_tabelle ein:
// Datensatz einfügen
String insert = "INSERT INTO meine_tabelle (id,name, betrag) VALUES (1, 'iPhone', 899.9)";
try {
Statement stm = con.createStatement();
stm.execute(insert);
} catch (SQLException e) {
e.printStackTrace();
}
Mehr über das Einsetzen, Bearbeiten und Löschen von MySQL-Datensätzen mit Java kannst du hier nachlesen.
Die Ausgabe auf der Konsole aller Datensätze der Tabelle geht dann so:
try {
Statement stm = con.createStatement();
String abfrage = "SELECT * FROM meine_tabelle";
ResultSet rs = stm.executeQuery(abfrage);
while(rs.next()){
System.out.println(rs.getString(1) + " " +
rs.getString(2) + " " +
rs.getString(3));
}
} catch (SQLException e) {
e.printStackTrace();
}
Mehr über das Auslesen von MySQL-Datensätzen in Java erfährst du hier.
Java Basics
[Java einrichten] [Variablen] [Primitive Datentypen] [Operatoren] [if else] [switch-case] [Arrays] [Schleifen]
Objektorientierung
[Einstieg] [Variablen ] [Konstruktor] [Methoden] [Rekursion] [Statische Member] [Initializer] [Pass-by-value] [Objektsammlungen] [Objektinteraktion] [Objekte löschen]
Klassenbibliothek
[Allgemeines] [String ] [Math] [Wrapper] [Scanner] [java.util.Arrays] [Date-Time-API]
Vererbung
[Einstieg Vererbung] [Konstruktoren bei Vererbung ] [Der protected Zugriffsmodifikator] [Abstrakte Klassen und Methoden] [Polymorphie in Java] [Typumwandlung] [Die Klasse Object] [Die toString()-Methode] [Objekte vergleichen] [Was ist ein Interface?]