JDBC – Datenzugriff aus Java

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Datenbank-Zugriffsschnittstellen. © Prof. T. Kudraß, HTWK Leipzig Überblick Datenbankzugriff mit PHP Datenbankzugriff mit JDBC Datenbankzugriff mit PSP.
2. DB-API: Programmierschnittstellen zu Datenbanken
Internet-Datenbanken
Allgemeine Technologien II
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Anbindung an Anwendungen
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Datenbankanwendungen mit Java und JDBC
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
JDBC Konzepte Realisierung von Zugriffen
XDoclet ETIS SS05.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Transaction Script Software Component Technology for Distributed Applications.
Datenbanksysteme für FÜ SS 2000 Seite Worzyk FH Anhalt Transaktionen und Parallelverarbeitung Eigenschaften von Transaktionen Konsistenz Isolation.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Remote Methode Invocation (RMI)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
Einführung MySQL mit PHP
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Synchronisation paralleler Transaktionen AIFB SS Konzept der Transaktion 4.2 Konzept der Transaktion (1/4) Eine Transaktion ist ein in sich geschlossener,
J2EE Conformance von JDBC Middleware und EJB Applikation Server Detlef KünzelSystemberater +49 (0)
Wizards & Builders GmbH Schulung Visual SourceSafe für Visual FoxPro Norbert Abb W&B.
JDBC: JAVA Database Connectivity
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
... und alles was dazugehört
ODBC (Open Database Connectivity)
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
WS 2012/13 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #11 Transaktionsverwaltung.
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #10 Transaktionsverwaltung.
Programmierprojekt Java Server Pages
JDBC (Java DataBase Connectivity)
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Transaktion Huang Zhenhao FU Shuai.
XML und Datenbanken © 2006 Markus Röder
Objectives Verstehen was unterDelegate verstanden wird
SQLite und XML in PHP 5.
Datenbankanbindung mit
1 Sichten-Änderungen (1) Änderungen von Sichten sind i.d.R. problematisch, da sie in entsprechende Änderungen der Basisrelationen überführt werden müssen.
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Dynamic SQL Preparing a query: EXEC SQL PREPARE FROM ; Executing a query: EXEC SQL EXECUTE ; “Prepare” = optimize query. Prepare once, execute many times.
Benutzerdefinierte Tags
Transaktionsverwaltung Beispiel einer typischen Transaktion in einer Bankanwendung: 1.Lese den Kontostand von A in die Variable a: read(A,a); 2.Reduziere.
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche.
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf.
1 Prof. Dr. Andreas SchmietendorfWS06/07 Übung 3 Test der Möglichkeiten des JDBC-Interfaces.
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013.
Christoph Wirtz | Seminarvortrag EBC | Lehrstuhl für Gebäude- und Raumklimatechnik Ein Tool zum automatisierten Erstellen von Conversion Scripts.
© 2005, Rudolf Jansen JDBC Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG - SIG Development.
Tutorium Software-Engineering SS14 Florian Manghofer.
JDBC Java DataBase Connectivity
 Präsentation transkript:

JDBC – Datenzugriff aus Java ETIS SS04

Gliederung Motivation Bestandteile Fehlerbehandlung Metadaten Zusammenfassung JDBC

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“ JDBC

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

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) JDBC

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 JDBC

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

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 JDBC

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 JDBC

Connection (I) repräsentiert Verbindung zur Datenbank Verbindungsaufbau: Connection con = DriverManager.getConnection( String url, String name, String passwort); Url: jdbc:<subprotocol>:<subname> Ablauf JDBC-DB-Anwendung: Verbindungsaufbau zur DB SQL-Anweisung senden Anfrageergebnisse verarbeiten JDBC

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 JDBC

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

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) JDBC

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 JDBC

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(); JDBC

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 JDBC

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) JDBC

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...) JDBC

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 JDBC

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(); JDBC

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 JDBC

Literatur 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 http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html Jansen, R.: Tuning-Center, Java Magazin,7/2003, S.80: Neuerungen aus JDBC 3.0 am Beispiel der Oracle-Datenbank JDBC

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()) JDBC

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 JDBC