Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

JDBC – Datenzugriff aus Java ETIS SS04. JDBC2 Gliederung Motivation Bestandteile Fehlerbehandlung Metadaten Zusammenfassung.

Ähnliche Präsentationen


Präsentation zum Thema: "JDBC – Datenzugriff aus Java ETIS SS04. JDBC2 Gliederung Motivation Bestandteile Fehlerbehandlung Metadaten Zusammenfassung."—  Präsentation transkript:

1 JDBC – Datenzugriff aus Java ETIS SS04

2 JDBC2 Gliederung Motivation Bestandteile Fehlerbehandlung Metadaten Zusammenfassung

3 JDBC3 Motivation(I) Standard für Zugriff auf Datenquellen aus Java- Anwendungen –RDBs, Flat Files, Spread Sheets Bestandteil Java-Standarddistribution seit JDK 1.1 aktuell: Version 3.0 JDBC keine Abkürzung –inoffiziell: Java Database Connectivity einfacher Zugriff aus Java auf Datenquellen plattform- und datenbankunabhängig –“write once run anywhere“

4 JDBC4 Motivation (II) unterschiedliche DBS besitzen unterschiedliche Programmierschnittstellen somit: –schwer, DBMS-unabhängige Anwendungen zu entwickeln –Probleme bei Portierung auf andere DBMS deshalb: –JDBC entwickelt somit: –selber Quellcode für Kommunikation mit beliebiger DB –(Voraussetzung: JDBC-Treiber und ANSI SQL-2 Fähigkeit der DB)

5 JDBC5 Bestandteile (I) Klassen und Schnittstellen des package java.sql bzw. javax.sql DriverManager –Einstiegspunkt, –hält Liste registrierter Treiberklassen –versucht Treiber zu lokalisieren + DB-Verbindung aufzubauen DataSource –repräsentiert Datenquelle in Java –Alternative zum DriverManager –arbeitet mit JNDI (Features wie Connection Pooling, verteilte Transaktionen + Wartbarkeit verbessert)

6 JDBC6 Bestandteile(II) Connection –repräsentiert Verbindung zu Datenquelle –beinhaltet auszuführende SQL-Statements + zurückgegebene Ergebnisse –eine Anwendung kann eine oder mehrere Verbindungen zu einer oder mehreren Datenquellen haben

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

8 JDBC8 Treibermanager führt Liste mit allen geladenen Treibern alle Verbindungen vom Programm zur Datenbank laufen über ihn Treiber aufgrund Verbindungsinformationen gewählt –registrierte Treiber entsprechend ihrer Reihenfolge getestet –erster passender ausgewählt Treiberkonzept bewirkt Flexibilität von JDBC

9 JDBC9 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

10 JDBC10 Connection (I) 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

11 JDBC11 Connection (II) Connection Pooling (seit 2.0) –da Connectionaufbau teure Operation –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

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

13 JDBC13 Statement (I) Drei Arten für Ausführung von SQL (Interfaces bauen aufeinander auf): –Statement: einfacher SQL-Befehl –PreparedStatement: vorkompilierter SQL-Befehl –CallableStatement: Aufruf einer Prozedur Methoden für Abfragen von Ergebnissen: –createQuery (Anfragen) –createUpdate (Einfügen, Ändern, Löschen sowie DDL- Anweisungen) –seit 2.0: BatchUpdates (Ausführung mehrerer Updates als “Stapel“ - Performancegewinn)

14 JDBC14 Statement (II) Methoden für Ausführen von Statements: –executeQuery (Anfragen) –executeUpdate (Änderungsoperation + DDL-Befehle) –execute (mehr als ein ResultSet oder update count zurückgegeben) Escape Syntax ermöglicht mehr DB-Unabhängigkeit Connections, Statements, ResultSets immer explizit schliessen, um Ressourcen so früh wie möglich frei zu geben

15 JDBC15 PreparedStatement(I) PreparedStatement pstmt = con.prepareStatement( “select * from person where name = ? and vorname = ?”); pstmt.setString(1, “Lustig”); pstmt.setString(2, “Peter”); ResultSet rs = rs.executeQuery();

16 JDBC16 PreparedStatement (II) Zeichenkette mit SQL-Anweisung bei Erzeugung des Objektes zu DBMS gesendet, dort kompiliert und zur Ausführung vorbereitet –Parameter unbekannt, wenn Statement kreiert –? Platzhalter für Parameter für endgültige Ausführung: IN-Parameter übergeben –Parameter gültig bis Aufruf clearParameter oder neu gesetzt Laufzeitvorteile, wenn Anweisung mehrfach mit verschiedenen Parametern ausgeführt

17 JDBC17 ResultSet (I) Java-Objekt, das Ergebnisse einer Anfrage enthält Anfrageergebnisse haben Tabellenform (besitzen Zeilen und Spalten) Ergebnisse durch getter abfragbar ResultSet hat Cursor –steht zunächst vor 1. Tupel –gültig bis ResultSet oder Statement geschlossen –mit next() vorwärts –seit 2.0: Scrollbare ResultSets (vor-, rückwärts durchlaufen + zu bestimmter Stelle springen)

18 JDBC18 ResultSet (II) weitere Neuerungen 2.0 –Datenänderungen noch nach Öffnen des ResultSets aktualisiert –änderbare ResultSets, d.h. Tupel der Ergebnismenge in ResultSet und Datenbank änderbar –SQL99-Datentypen (benutzerdefinierte Typen, BLOB, ARRAY...)

19 JDBC19 Fehlerbehandlung Problem: DBMS nutzen z.T. alten oder propritären SQL-Syntax Lösung: JDBC kontrolliert nicht, ob Anfrage richtig, –Nutzer kann jegliche DBMS-Funktionalität nutzen –wenn Anfrage falsch von DB Fehler erzeugt auch Fehler bei Verbindungsproblemen, DBMS- oder Hardwarefehlern Fehler als Exceptions signalisiert – mit try und catch abfangen Exception bedeutet nicht unbedingt, dass Methode nicht ausgeführt  besser explizit zurücksetzen

20 JDBC20 Metadaten DBMS haben unterschiedliche Feature, Datentypen Metadaten informieren über die Datenbank –DB-Schema, SQL-Dialekt, implementierte Operationen java.sql.DatabaseMetaData: –Informationen zur Struktur DB oder DBMS dmd.getURL(); Anfrage zur Laufzeit vom Nutzer eingegeben, Informationen über ResultSet nötig Schnittstelle java.sql.ResultSetMetaData: –Informationen zur Struktur des ResultSet rs.getColumnCount();

21 JDBC21 Zusammenfassung Standard für DB-Zugriff aus Java –plattform- und datenbankunabhängig –grundlegende Feature einfach, schnell erlernbar vor 3.0 hauptsächlich grundlegende Möglichkeiten zum Zugriff von Javaprogrammen auf Datenbanken ab 3.0 DB-Zugriff aus Application Server Schicht (Connection-Pooling-Konfiguration) viele neue Eigenschaften (ab 2.0) optional und müssen nicht von JDBC-Treibern unterstützt werden alte Treiber weiter nutzbar

22 JDBC22 Literatur Saake, G., Sattler, K.: Datenbanken & Java: JDBC, SQLJ und ODMG dpunkt.verlag, Heidelberg, Mai t/GettingStartedTOC.fm.htmlhttp://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstar t/GettingStartedTOC.fm.html Jansen, R.: Tuning-Center, Java Magazin,7/2003, S.80: Neuerungen aus JDBC 3.0 am Beispiel der Oracle-Datenbank

23 JDBC23 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())

24 JDBC24 Neuerungen in JDBC 3.0 im Vordergrund DB-Zugriff aus Application Server Schicht –Connection-Pooling-Konfiguration –Savepoints –Wiederverwendung von Prepared Statements –Zugriff auf automatisch generierte Schlüssel –Zugriff auf Metainformtionen von Statement- Parametern –Verbesserungen bei Result-Sets


Herunterladen ppt "JDBC – Datenzugriff aus Java ETIS SS04. JDBC2 Gliederung Motivation Bestandteile Fehlerbehandlung Metadaten Zusammenfassung."

Ähnliche Präsentationen


Google-Anzeigen