Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Johanna Albert Geändert vor über 9 Jahren
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 2000. http://java.sun.com/products/jdbc/ http://java.seite.net/jdbc/treiber.html
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.