JDBC: JAVA Database Connectivity
-
Upload
joshua-hernandez -
Category
Documents
-
view
86 -
download
2
description
Transcript of JDBC: JAVA Database Connectivity
![Page 1: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/1.jpg)
JDBC: JAVA Database Connectivity
Autor: Martin Hulin, überarbeitete Folien von Michael Austermann
![Page 2: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/2.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/3.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/4.jpg)
JDBC-Klassen/Schnittstellen-Übersicht (unvollständig)
![Page 5: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/5.jpg)
Treiber in JDBC
![Page 6: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/6.jpg)
JDBC-Treibertypen
![Page 7: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/7.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/8.jpg)
Laden des JDBC-Treibers
![Page 9: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/9.jpg)
Verbindung zur Datenbank:Connection Objekt erzeugen
![Page 10: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/10.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/11.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/12.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/13.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/14.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/15.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/16.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/17.jpg)
ResultSet (3)
![Page 18: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/18.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/19.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/20.jpg)
Connection Pooling
![Page 21: JDBC: JAVA Database Connectivity](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/21.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022012918/56812b57550346895d8f78a4/html5/thumbnails/22.jpg)
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