Datenbankzugriff mit Java

Guten Abend

Zu Beginn möchte ich mich an dieser Stelle kurz vorstellen, mein Name ist Kevin, ich bin 18 Jahre alt und befinde mich zur Zeit ebenso wie Florian in einer Lehre zum Informatiker (Applikation). Ich habe bisher Erfahrungen in diversen IT-Technologien gesammelt, hierzu zählen Java, SQL, .NET und HTML/PHP. Um mein Wissen zu vertiefen bzw. neu Erlernetes zu dokumentieren und für Andere zugänglich zu machen, habe ich vor auf diesem Blog in Zukunft einige Beiträge zu verfassen.

Doch nun zum eigentlichen Thema. In meiner Lehrfirma habe ich sehr häufig mit SQL und Datenbanken zu tun, da ich ausserdem gerne Java programmiere habe ich mich gefragt ob und wie es möglich ist mittels Java auf Datenbanken zuzugreifen. So habe ich mich mit diesem Thema etwas näher auseinandergesetzt und schlussendlich eine simple Java Applikation entwickelt, mit welcher man einfach auf eine MySQL Datenbank zugreifen und auf dieser beliebige Statements ausführen kann. Nun möchte ich euch an Hand eines einfachen Beispiels zeigen, wie mann eine Verbindung zu einer Datenbank herstellt und auf dieser SQL-Statements ausführt.

Um auf Datenbanken zugreifen zu können, benötigen wir eine Schnittstelle namens JDBC (Java Database Connectivity), sie ist vergleichbar mit ODCB under Windows und ist speziell auf relationale Datenbanken ausgerichtet. Alle nötigen Klassen und Schnittstellen die wir für den Gebrauch von JDBC brauchen finden wir unter „java.sql“.

Schritt 1 : Datenbank-Treiber laden

Für jede Datenbank sind spezifische Treiber erforderlich, welche die JDBC-Spezifikation implementieren. Diese Treiber werden üblicherweise von den Datenbankherstellern zum Download angeboten. In diesem Beispiel verwende ich eine MySQL Datenbank, die Treiber müssen von mysql.com heruntergeladen werden und unter $JAVAHOME/jre/lib/ext/ abgelegt werden bzw. im Classpath eingetragen werden.

Ist diese Hürde gemeistert, können wir den Treiber mit folgender Anweisung laden.

Class.forName(“com.mysql.jdbc.Driver“);

Wer eine andere Datenbank verwendet, findet hier eine Auflistung der Klassennamen gängiger Datenbanktreiber.


Schritt 2: Verbindung zu Datenbank herstellen

Wir haben die Datenbank-Treiber geladen, nun können wir uns auch schon damit beschäftigen die Verbindung zur MySQL DB herzustellen. Die Verbindung wird mit Hilfe des DriverManagers hergestellt, konkret sieht dies so aus:

Connection conn = null;
conn = DriverManager.getConnection(“DB_URL“,“BENUTZER“,“PASSWORD“);

Die Parameter müssen selbstverständlich auf die jeweilige Datenbank angepasst werden, zudem sollte die Connection am Schluss unbedingt geschlossen werden (Siehe Gesamtbeispiel unten).

Schritt 3: Ausführen eines SQL Statements

Unsere Verbindung zur Datenbank steht, nun können wir auch schon damit beginnen Statements auf der Datenbank auszuführen. Mit Folgenden Anweisungen definieren wir ein Statement und führen es auf der Datenbank aus:

Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(“SELECT * FROM customers“);

HINWEIS: Mit der Methode “executeQuery(String str)“ des Statement-Objekts können wir SELECT Abfragen ausfüren, für Update, Insert oder Delete Statements benötigen wir die Methode “executeUpdate(String str)“.

Schritt 4: Ergebnisse ausgeben

Wir haben ein Statement auf der Datenbank ausgeführt und das Resultat in ein ResultSet abgelegt. Im letzten Schritt lesen wir das ResultSet aus und zeigen die Daten an.

String spalte1;
String spalte2;

while(rs.next()){
String spalte1 = rs.getString(1); String spalte2 = rs.getString(2); System.out.println(spalte1 + “ - “ + spalte2); }

Wir loopen das ResultSet solange durch bis wir an dessen Ende angekommen sind, und geben dabei von jeder Zeile die ersten 2 Spalten aus. rs.next setzt hierbei den Cursor immer auf die nächste Zeile, und überprüft ob diese Daten enthält. Mit rs.getString(SpaltenZahl) geben wir an welche Spalte wir auslesen möchten.

Das war es auch schon, unten findet ihr ein Gesamtbeispiel welches ihr gerne kopieren könnt. Ich hoffe das Tutorial war für eucht hilfreich, Verbesserungsvorschläge oder Kritik nehme ich natürlich gerne zur Kenntnis.

Lg Kevin

Gesamtbeispiel

import java.sql.*;

public class Main {

public static void main(String[] args) {

Statement stmt;
ResultSet rs;
Connection conn = null;

/*
* MySQL Datenbank-Treiber laden
*/
try{
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException e){
e.printStackTrace();
}

/*
* Verbindung zu Datenbank herstellen
*/
try{
conn = DriverManager.getConnection("jdbc:mysql://localhost/TestDB", "root", "password");
}catch (SQLException e){
e.printStackTrace();
}

/*
* Statement ausführen und Ergebnis ausgeben
*/
try{
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM customers");

while(rs.next()){

System.out.println(rs.getString(1));

}

}catch (SQLException e){
e.printStackTrace();
}

/*
* Verbindung zu Datenbank trennen
*/
try{ conn.close(); }catch (SQLException e ){ e.printStackTrace(); }
}

}