Java und Datenbanksysteme
Datenbankanbindung mit JDBC
30.05.2001 – Stefan Niederhauser – sn@atelier-w.ch
1-Einführung
Datenbanksysteme
Java und Datenbanken: JDBC
Geschichte der JDBC-Versionen
Vergleich von Suns JDBC zu Microsofts ODBC
Datenbanksysteme
Anwendungsbereich von Datenbanksystemen
Verwaltung grosser Datenbestände
Optimierter Zugriff
Transaktionsmanagement (Rollback)
SQL als standardisierte Abfragesprache
F Alternativen für den Heimgebrauch
FFlat Files (XML, Tab separiert, etc.)
FIn-Memory Datenbanken
Fjava.util.Properties
FFreie Datenbanksysteme (MySQL, HyperSonic SQL, etc.)
Java und Datenbanken: JDBC
JDBC als integraler Bestandteil der Sun Strategie auf
dem Enterprise Markt
Plattformübergreifende Entwicklung und Flexibilität
beim Datenbankzugriff
Simples API als Grundlage
Geschichte der JDBC–
Versionen
JDBC 1.0 (Januar 1997)
jdbc.sql.* als optionales Paket
JDBC 2.0 (Mai 1998)
java.sql.* in JSE2
Neue Datentypen, Performance Hints, etc.
javax.sql.* zusätzlich in JEE2
Connection Pooling, JNDI Integration, JTS Integration, etc.
JDBC 3.0 in der Public Review seit April 2001
Feedback an jdbc@eng.sun.com
Safepoint (Transaction Support), Besserer Java – Objekt Integration,
etc.
JDBC vs. ODBC
Basis beider API's
X/Open SQL CLI (Call Level Interface)
Für ODBC-Developper entwickelt
Einfacher Übergang durch ähnlichen Aufbau
Mit ODBC-Treibern einsetzbar
Durch Typ 1 Driver von Sun oder Drittherstellern
Plattformunabhängigkeit vs. Geschwindikeit
2-Implementation
Datenflussdiagramm
JDBC – Driver Typen
JDBC – Objekte
JDBC – Datentypen
JDBC – URL‘s
Datenflussdiagramm
J ava Applikati o
n
Java Applet
JD CB –
JD CB –
Driver
PI A
verManager
D r i
Dr iver
MiddleWare
DB MS
Driver
OD C B
DB MS
JDBC – Driver Typen
Typ 1
ODBC
Typ 2
Native C Implementation
Typ 3
Java.Net Implementation via MiddleWare
Typ 4
100% Java-Implementation
JDBC – Objekte
java.sql.DriverManager
java.sql.Connection
java.sql.Statement
java.sql.PreparedStatement
java.sql.CallableStatement
java.sql.ResultSet
MetaData
java.sql.DataBaseMetaData
java.sql.ResultSetMetaData
java.sql.SQLException
Typ 1 Driver
ODBC-Driver
Typ 2 Driver
C Implementation
Typ 3 Driver
MiddleWare
Typ 4 Driver
JDBC – Datentypen
Typen-Konvertierung durch Methoden: getXXX()
getString()
getInt()
getBlob()
etc.
Spezielle Datentypen für SQL-Äquivalente:
java.sql.Blob
java.sql.Struct
java.sql.Timestamp
etc.
JDBC – URL‘s
Beispiel
jdbc:mysql://db.unibas.ch:3123/someDB?user=u&password
=pw
Im Detail
Protokoll des JDBC – Drivers
Hostname:Port des Datenbanksystems
Datenbank
Optionen (User, Passwort, Verschlüsselung, etc.)
3-Schritt für Schritt
„Hello JDBC – World“
JDBC-Driver laden
Datenbankverbindung herstellen
SQL-Abfrage
Resultate darstellen
Updates, Inserts, Deletes
Prepared Statements
JDBC – Driver laden
...
String jdbcDriver = "org.gjt.mm.mysql.Driver";
try {
Class.forName(jdbcDriver).newInstance();
}
catch (Exception e) {
System.err.println("Unable to load driver.");
e.printStackTrace();
}
...
Datenbank-Verbindung
herstellen
...
String jdbcURL = "jdbc:mysql://db.unibas.ch:8080/jdbc?user=jdbc&password=joe";
Connection con;
try {
con = DriverManager.getConnection(jdbcURL);
}
catch (SQLException E) {
System.err.println("Unable to Connect to Database: "+E.getMessage());
}
...
SQL Abfrage
...
String sqlString = “ SELECT ‘HELLO‘, ‘JDBC‘, ‘-‘, ‘WORLD‘ ";
Statement stm = con.createStatement();
ResultSet res = stm.executeQuery(sqlString);
...
Resultate Abfragen
...
while (res.next()) {
System.out.println(res.getString(1) + res.getString(2) + res.getString(3) + res.getString(4));
}
res.close();
stm.close();
...
HELLO JDBC - WORLD
Updates, Inserts, Deletes
...
String sqlString = “ INSERT INTO people VALUES ( 'Hermann' , 'Heinz' ) ";
Statement stm = con.createStatement();
int n = stm.executeUpdate(sqlString);
System.out.println( n + " rows affected")
...
Prepared Statements
...
String sqlString = “ UPDATE persons SET vorname = '?' WHERE id = ? ";
PreparedStatement ps = con.prepareStatement();
for (ix = 0; ix <= 1000; ix++) {
ps.setString(1, "Heinz_"+ix);
ps.setInt(2, ix);
int n = ps.executeUpdate();
}
...
4-JDBC – Bücher und Links
Bücher
JDBC API Tutorial and Reference (Sun)
Database Programming with JDBC and Java
(George Reese / O‘Reilly Verlag)
Links
http://www.java.sun.com/products/jdbc/
http://developer.java.sun.com/developer/onlineTraining/Database
/JDBC20Intro/JDBC20.htm
http://mmmysql.sourceforge.net (MySQL JDBC Driver)
Literaturverzeichnis
JDBC API Entwürfe von Sun: v1.0, v2.0, v2.1, v3.0 (Final Draft)
JDBC Dokumentation von Sun
google...