Java und Datenbanksysteme 1

Werbung
Java und Datenbanksysteme
Datenbankanbindung mit JDBC
30.05.2001 – Stefan Niederhauser – [email protected]
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 [email protected]
ƒ 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...
Herunterladen