Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche.

Ähnliche Präsentationen


Präsentation zum Thema: "JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche."—  Präsentation transkript:

1 JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche Programmierschnittstellen somit schwer, DBMS-unabhängige Anwendungen zu entwickeln und Probleme bei Portierung auf andere DBMS deshalb JDBC entwickelt

2 JDBC2 Motivation (II) mit selben Quellcode jede beliebige DB angesprechen (Voraussetzung Treiber und ANSI SQL-2 Fähigkeit der DB) einfacher Zugriff aus Java auf bestehende Datenbanken Plattform- und datenbankunabhängig seit JDK1.1 Bestandteil der Java- Standarddistribution

3 JDBC3 Bestandteile (I) Klassen und Schnittstellen des package java.sql bzw. javax.sql Drivermanager –Einstiegspunkt, –Treiber registriert, –DB-Verbindung aufgebaut Connection –repräsentiert DB-Verbindung –eine Anwendung kann mehrere DBs öffnen

4 JDBC4 Bestandteile(II) Statement –ermöglicht Ausführung von SQL-Anweisungen über gegebene Verbindung ResultSet –verwaltet Ergebnisse einer Anfrage –unterstützt Zugriff auf einzelne Spalten

5 JDBC5 Treibermanager führt Liste mit allen geladenen Treibern alle Verbindungen vom Programm zur Datenbank laufen über ihn Treiber aufgrund Verbindungsinformationen gewählt Treiberkonzept bewirkt Flexibilität von JDBC

6 JDBC6 Treiber Treiber Schnittstelle zwischen JDBC und DB –Austausch Treiber ermöglicht Zugriff auf andere DB mit selben Quellen –d.h. jedes DBMS benötigt eigenen Treiber explizites Laden im Programm: Class.forName(„jdbc.odbc.JdbcOdbcDriver“); –Java-Classloader lokalisiert Treiber und lädt und linkt ihn automatisch –danach registriert sich Treiber selbständig beim Treibermanager

7 JDBC7 Connection repräsentiert Verbindung zur Datenbank Verbindungsaufbau: Connection con=DriverManager.getConnection (String url, String name, String passwort); –Url: jdbc: : Ablauf JDBC-DB-Anwendung: –Verbindungsaufbau zur DB –SQL-Anweisung senden –Anfrageergebnisse verarbeiten

8 JDBC8 Statement + ResultSet Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(“select...”); while(rs.next()){ System.out.println(rs.getString(“name”)); } rs.close(); stmt.close();

9 JDBC9 Statement Drei Arten für Ausführung von SQL: –Statement: einfacher SQL-Befehl –PreparedStatement: vorkompilierter SQL-Befehl –CallableStatement: Aufruf einer Prozedur Anfragen (createQuery) Einfüge-, Änderungs- und Löschoperationen sowie DDL-Anweisungen (createUpdate) –Rückgabewert kein ResultSet sondern Anzahl betroffener Tupel oder 0 bei DDL-Befehlen

10 JDBC10 PreparedStatement (I) Zeichenkette mit SQL-Anweisung bei Erzeugung des Objektes zu DBMS gesendet, dort kompiliert und zur Ausführung vorbereitet Laufzeitvorteile, wenn Anweisung mehrfach mit verschiedenen Parametern ausgeführt für endgültige Ausführung: IN-Parameter übergeben

11 JDBC11 PreparedStatement(II) PreparedStatement pstmt = con.prepareStatement(“select * from table where name=?”); pstmt.setString(1, “test”); ResultSet rs = rs.executeQuery();

12 JDBC12 Fehlerbehandlung JDBC kontrolliert nicht, ob Anfrage richtig, wenn falsch von DB Fehler erzeugt Fehler bei Verbindungsproblemen oder DBMS- oder Hardwarefehler Fehler als Exceptions signalisiert – mit try und catch abfangen Exception bedeutet nicht unbedingt, dass Methode nicht ausgeführt  besser explizit zurücksetzen

13 JDBC13 Metadaten Informationen über die Datenbank –DB-Schema, SQL-Dialekt, implementierte Operationen Schnittstelle java.sql.ResultSetMetaData: –Struktur des ResultSet rs.getColumnCount(); java.sql.DatabaseMetaData: –Struktur DB oder DBMS dmd.getURL();

14 JDBC14 Transaktionen i.d.R. Verbindungen im autocommit-Modus gestartet (einzelnes Statement sofortige Auswirkung auf Datenbank) mehrere Operationen zusammenfassen: connection.setAutocommit(false); –so: Änderungen zu beliebigen Zeitpunkt dauerhaft in DB geschrieben (commit()) oder –Änderungen aktueller Transaktion rückgängig gemacht (rollback())

15 JDBC15 Neuerungen in JDBC 2.1(I) Scrollbare ResultSets –rückwärts durchlaufen –sensitiv Datenänderungen noch nach Öffnen des ResultSets aktualisiert Änderbare ResultSets –Tupel einer Ergebnismenge ändern (Änderungen wirken sich auf Datenbank aus) SQL99-Datentypen –benutzerdefinierte Typen, BLOB, ARRAY...

16 JDBC16 Neuerungen in JDBC 2.1(II) BatchUpdates –Ausführung mehrerer Änderungsoperationen als Batch (Performancegewinn) Connection Pooling –Reduzierung Verbindungsauf- und -abbau –wenn DB-Verbindung geschlossen, nicht beendet, sondern markiert –will andere Anwendung Verbindung öffnen, Prüfung, ob passende Verbindung in Pool - nur wenn nein, neue aufgebaut

17 JDBC17 Neuerungen in JDBC 2.1(III) Erweiterungen können Entwicklung von Anwendungen erleichtern viele neue Eigenschaften optional und müssen nicht von JDBC-Treibern unterstützt werden alte Treiber weiter nutzbar (unterstützen aber Neuerungen nicht)

18 JDBC18 Quellen Saake, G., Sattler, K.: Datenbanken & Java: JDBC, SQLJ und ODMG dpunkt.verlag, Heidelberg, Mai


Herunterladen ppt "JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche."

Ähnliche Präsentationen


Google-Anzeigen