JDBC: JAVA Database Connectivity

22
JDBC: JAVA Database Connectivity tor: Martin Hulin, überarbeitete Folien von Michael Austermann

description

JDBC: JAVA Database Connectivity. Autor: Martin Hulin, überarbeitete Folien von Michael Austermann. Gliederung. Einleitung JDBC Klassen/Schnittstellen - Übersicht Treiber in JDBC Theoretische Grundlagen Arbeiten mit JDBC JDBC Standard Extension API Aufgabe. Was ist JDBC?. - PowerPoint PPT Presentation

Transcript of JDBC: JAVA Database Connectivity

Page 1: JDBC: JAVA Database Connectivity

JDBC: JAVA Database Connectivity

Autor: Martin Hulin, überarbeitete Folien von Michael Austermann

Page 2: JDBC: JAVA Database Connectivity

Gliederung

Einleitung JDBC Klassen/Schnittstellen - Übersicht Treiber in JDBC Theoretische Grundlagen Arbeiten mit JDBC JDBC Standard Extension API Aufgabe

Page 3: JDBC: JAVA Database Connectivity

Was ist JDBC?

API für Datenbankzugriff Speziell für die Programmiersprache JAVA Wie ODBC

Call Level Interface (CLI) Basiert auf X/Open-Standard Unabhängig vom DBMS Treiber DBMS-spezifisch

Unterschiede zu ODBC Methoden statt Funktionen Objekte statt Handle

Page 4: JDBC: JAVA Database Connectivity

JDBC-Klassen/Schnittstellen-Übersicht (unvollständig)

Page 5: JDBC: JAVA Database Connectivity

Treiber in JDBC

Page 6: JDBC: JAVA Database Connectivity

JDBC-Treibertypen

Page 7: JDBC: JAVA Database Connectivity

JDBC-Funktionsweise

JDBC spezifiziert nur Schnittstellen Implementation durch DBMS-Hersteller:

Treiber Es gibt 4 Treibertypen Typ 3 und 4 sind vorzuziehen:

pure JAVA Treibermanager lädt Treiber Treiber stellt Verbindung zur Datenbank

her

Page 8: JDBC: JAVA Database Connectivity

Laden des JDBC-Treibers

Page 9: JDBC: JAVA Database Connectivity

Verbindung zur Datenbank:Connection Objekt erzeugen

Page 10: JDBC: JAVA Database Connectivity

Programm mit JDBC: Typischer Ablauf

JDBC Treiber laden Verbindung zur Datenbank aufbauen Eigenschaften der Verbindung

spezifizieren SQL-Abfrage ausführen:

Result-Set erzeugen Result-Set durchlaufen:

Aktionen ausführen Verbindung zur Datenbank beenden

Page 11: JDBC: JAVA Database Connectivity

Programm mit JDBC: Typischer Ablauf als Programmcode

// Treiber ladenClass.forName("packageName.YourDriver");

// Verbindung zum DBMS aufbauenConnection con = DriverManager.getConnection("yourURL", "user", "pwd");

// Statement erzeugenStatement stmt = con.createStatement("SELECT * FROM yourTable");

// Statement ausführenResultSet rs = stmt.executeQuery();

// Ergebnismenge bearbeitenwhile (rs.next()) { // Cursor eins vor

System.out.println(rs.getInt("emp_id") + rs.getString(2));}

// Aufräumarbeitenrs.close(); // Ergebnismenge schließenstmt.close(); // Statement schließencon.close(); // Verbindung zum DBMS schließen

Page 12: JDBC: JAVA Database Connectivity

Die JDBC-Klassen:Connection, DatabaseMetaData

Ein Objekt vom Typ Connection repräsentiert eine physikalische Verbindung zum DBMS

Connection steuert Transaktionen mit DBMS Objekte vom Typ DatabaseMetaData enthalten

Informationen über Struktur der Datenbank: Tabellen, Attribute, Domänen, Stored Procedures

Datenbank-Metadaten sind von DBMS zu DBMS unterschiedlich organisiert. Hier zahlt sich die standardisierte Schnittstelle JDBC

aus

Page 13: JDBC: JAVA Database Connectivity

Statements (1)

Statements sind die Arbeitspferde in JDBC Mit ihnen werden Daten manipuliert und

gesichtet Es gibt 3 Typen mit verschiedenen Aufgaben

Statement Zur Datenmanipulation und zum Erzeugen von ResultSets.

PreparedStatement Precompiled Statement

PreparedStatement pstmt = connnection.prepareSatement( "INSERT INTO emp VALUES (?,?,?,?,?);");

CallableStatement zum Ausführen von Stored Procedures

Page 14: JDBC: JAVA Database Connectivity

Statements (2)

Statement kann nicht mit new erzeugt werden.

Es wird bei einem Connection Objekt angefordert

Dadurch bleibt der Bezug zur Connection bestehen

Beispiel: Statement stmt = connection.createStatement()

Page 15: JDBC: JAVA Database Connectivity

ResultSet (1)

ResultSets enthalten die Ergebnis-Menge eines ausgeführten Statements

Wird von einem Statement erzeugt Beispiel:

ResultSet rs = stmt.executeQuery( "SELECT * FROM employee;")

Jedes RS hat einen Cursor der auf die aktuelle Zeile der Ergebnismenge zeigt.

Page 16: JDBC: JAVA Database Connectivity

ResultSet (2)

Verschiedene ResultSet-Typen (je nach Treiber und Anforderung durch Applikation) Forward only Scroll-insensitive Scroll-sensitive updateable, usw

Zugriff auf Spaltenwerte mit getXXXX (Spaltenname) oder getXXXX(Spaltennummer) XXXX steht für den Datentyp

Page 17: JDBC: JAVA Database Connectivity

ResultSet (3)

Page 18: JDBC: JAVA Database Connectivity

Batch-Update

Standard: Neues Statement-Objekt für jede Datenmanipulation (insert, update, delete)

Schneller: Mehrere Aufträge sammeln, dann gemeinsam ausführen: Batch-Update

Beispiel stmt.addBatch ("insert ...")

stmt.addBatch ("insert ...")...

Int [] UpdateCounts = stmt.executeBatch ()

Page 19: JDBC: JAVA Database Connectivity

Erweiterungen:JDBC Standard Extension API

Kern von JDBC soll einfach und klein sein Standard-Erweiterungen für JDBC werden in die

Standard Extension API ausgelagert. 3 wichtige Standard-Erweiterungen für

JDBC Java Naming and Directory Interface

Verwendung von Datenquellen: DataSource Connection Pooling

Wiederverwendung von Verbindungen spart Zeit Distributed Transactions

Transaktionsmanagement bei mehreren Datenbanken

Page 20: JDBC: JAVA Database Connectivity

Connection Pooling

Page 21: JDBC: JAVA Database Connectivity

Verteilte Transaktionen

Alle Connections tragen sich über einen RM beim TM ein. Aktionen auf verschiedenen DBS werden vom TM zu einer

Transaktion zusammengefaßt. Dadurch wird dem Anwendungsentwickler das Transaktions-

management auf verteilten Systemen vereinfacht.

Page 22: JDBC: JAVA Database Connectivity

Aufgabe beim Autoverleih

JAVA Applikation oder JAVA Servelet mit JDBC für

Reservierungsübersicht eines Kunden Löschen einer Reservierung Zusatz (evtl.):

Reservierung in Ausleihe umwandeln