220 likes | 334 Views
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?.
E N D
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? • 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
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
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
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
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
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
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()
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.
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
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 ()
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
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.
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