Abbildung 6 zeigt einen kurzen Überblick über die verschiedenen Treiberarten (Quelle: Wikipedia.org):
Die grobe Vorgehensweise
- Wir bauen unsere SQL-Abfrage. In diesem Beispiel soll es um einen Kunden gehen, zu dem wir seine Kundennummer, den Namen und Vornamen speichern.
- Wir bauen die Klasse "Kunde", die einen Kunden darstellt (ein Kunde hat einen Namen, Vornamen und seine Kundennummer)
- Wir kümmern uns um den SQL-Lowlevel-Input/Output (SQL-Verbindung aufbauen, Treiber einbinden, JDBC-URL angeben, …)
- Wir holen unsere Daten mithilfe des SQL-Lowlevel-Inputs/Outputs ab und geben sie auf der Standardausgabe aus
- Zum Schluss wollen wir, da unser Unternehmen stets Wachstum verspürt, ein neues Kundenobjekt in der Datenbank speichern
SQL-Abfrage bestimmen
Wir werden hier kein kompliziertes SQL-Statement erstellen, das über 200 verschiedene Tabellen reicht und 50 Where-Klauseln besitzt. Die Tabelle "kunden" enthält lediglich drei Datenfelder: Kundennummer, Vorname und Nachname (Abb. 7).
Damit wir alle Datensätze angezeigt bekommen, verwenden wir in der SQL-Abfrage den Stern-Operator (*). Danach muss mit dem Hilfswort FROM die Tabelle ausgewählt werden, von der die SQL-Daten abgefragt werden. Ein vollständiger SELECT-Befehl mit anschließender Datenausgabe könnte folgendermaßen aussehen:
Statt die Anfrage (den SQL-SELECT-Befehl) manuell einzugeben (wie oben), macht dies unser Java-Programm. Wir als Programmierer müssen aber in Java die Anweisung "hinterlegen".
Dateneinfügen mit Insert
Natürlich wollen wir auch neue Datensätze in unsere Datenbank laden. Die allgemeine Syntax des INSERT-Befehls sieht folgendermaßen aus:
INSERT INTO tabellenname (feld1, feld2, …)VALUES (wert1, wert2, ….)
Das "INSERT INTO"-Kommando erwartet zunächst Informationen zur Tabelle. Zwingend erforderlich ist der Tabellenname. In Klammern folgen die Spalten, in die Werte eingefügt werden sollen. Dabei müssen alle Pflichtspalten (Datenspalten, die als NOT NULL deklariert wurden) angegeben werden, zusätzliche Spalten sind optional. Eine Datenspalte, deren Kennzeichnung "auto_increment" ist, müssen Sie NICHT angeben. Dies erledigt der Zähler für uns. Auto_increment wird idealerweise für Kundennummern oder ähnliche Datenfelder verwendet. Getrennt durch das Schlüsselwort VALUES wird ein Datensatz in Klammern eingefügt. Dabei wird wert1 in das feld1 eingefügt, wert2 in feld2 usw.
mysql> INSERT INTO kunden(vorname,nachname)-> VALUE("Christian","Barthel");
Der Befehl (siehe oben) fügt einen neuen Kunden mit dem Namen "Christian" und dem Nachnamen "Barthel" ein. Die "kundennummer" wird automatisch um eins erhöht.
„Kunden“-Klasse erstellen
In objektorientierten Programmiersprachen ist es üblich, für die meisten Dinge eigene Java-Klassen zu erstellen. Aus diesen Klassen können später Objekte erstellt werden, die alle Fähigkeiten (Methoden) besitzen und Eigenschaften im Speicher ablegen. Wir wollen Kundendaten aus der Datenbank abfragen. Hierzu bietet sich für jeden Datensatz der Kundendatenbank ein Objekt an, das zwei Strings (Vorname und Nachname) sowie einen Integer-Wert (Ganzzahl, die Kundennummer) speichert. Eine einfach gehaltene Klasse könnte folgendermaßen aussehen:
package javamysql;public class Kunde {//Attribute oder Instanzvariablenprivate int kundennummer;private String nachname;private String vorname;//Konstruktorpublic Kunde(int i, String n, String v){kundennummer = i;nachname = n;vorname = v;}//Beginn der Methodenpublic void setKundennummer( int i ){kundennummer = i;}public void setNachname( String n ){nachname = n;}public void setVorname( String v ){vorname = v;}public int getKundennummer(){return kundennummer;}public String getNachname(){return nachname;}public String getVorname(){return vorname;}@Overridepublic String toString(){return kundennummer+" "+nachname+" "+vorname;}}
Die Klasse mit dem Namen "Kunde" enthält – wie zu erwarten – drei Instanzvariablen, deren Werte mit so genannten Getter- und Setter-Methoden geändert beziehungsweise ausgegeben werden können. Die überschriebene Methode toString() gibt uns einen Kunden als String zurück (mit Kundennummer, Nachname und Vorname).
Bevor wir uns nun um die Datenbank kümmern, sollten wir noch einen Startpunkt für unser Programm erstellen und die Klasse "Kunde" testen.
package javamysql;public class Main {public static void main(String[] args) {//Neues Kundenobjekt erstellen//diese Daten kommen später von unserer Datenbank)Kunde k1 = new Kunde(1,"Christian","Barthel");//Kundenobjekt ausgebenSystem.out.println(k1.toString());}}
Da wir mit System.out.println eine Ausgabe auf der Konsole getätigt haben, sollte es folgendermaßen aussehen:
run:1 Christian BarthelBUILD SUCCESSFUL (total time: 0 seconds)




