Datenbanksysteme SS 2007



Ähnliche Dokumente
seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Oracle: Abstrakte Datentypen:

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Java Database Connectivity-API (JDBC)

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Java Database Connectivity-API (JDBC)

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Client/Server-Programmierung

Webbasierte Informationssysteme

3. Stored Procedures und PL/SQL

Datenbank und Informationssysteme

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Prozedurale Datenbank- Anwendungsprogrammierung

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen

Universität Stuttgart Abteilung Anwendersoftware Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Kapitel DB:VI (Fortsetzung)

Datenbankzugriff mit JDBC

Transaktionen in der Praxis. Dr. Karsten Tolle

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Client/Server-Programmierung

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Von ODBC zu OLE DB. Neue Möglichkeiten der Datenintegration. Harald Gladytz, Team Vertrieb ESRI Niederlassung Leipzig

JDBC. Allgemeines ODBC. java.sql. Beispiele

Datenbanken SQL JDBC. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 21

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

IV. Datenbankmanagement

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Einführung in JDBC. IFIS Universität zu Lübeck

SAP NetWeaver Gateway. 2013

11 Anwendungsprogrammierung

Prozessarchitektur einer Oracle-Instanz

Kapitel DB:VI (Fortsetzung)

Datenbanken & Informationssysteme Übungen Teil 1

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Java Database Connectivity-API (JDBC)

Gesicherte Prozeduren

6.9 Java Server Pages

SQL (Structured Query Language) Schemata Datentypen

Datenbankzugriff mit JDBC

Datenmanagement in Android-Apps. 16. Mai 2013

Datenbanksysteme SS 2007

Wie kommen die Befehle zum DBMS

Beispiel: DB-Mock (1/7)

Verbinde die Welten. Von Oracle auf MySQL zugreifen

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Interaktive Webseiten mit PHP und MySQL

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

IBM SPSS Data Access Pack Installationsanweisung für Windows

SQL structured query language

vs. Fehler zur Übersetzungszeit

Webbasierte Informationssysteme

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java.

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanksysteme 2011

Ein Ausflug zu ACCESS

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

DB2 Kurzeinführung (Windows)

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Microsoft Azure Fundamentals MOC 10979

Praktikum Datenbanksysteme

SQL und MySQL. Kristian Köhntopp

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7

Klausur Interoperabilität

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

JDBC. Java DataBase Connectivity

Ho Ngoc Duc IFIS - Universität zu Lübeck

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Windows Server 2012 R2 Essentials & Hyper-V

Java Kurs für Anfänger Einheit 5 Methoden

Perceptive Document Composition

Pervasive.SQL ODBC Treiber. ab ABACUS er-Version Installationsanleitung

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Datenbanken 1 für Mediennformatiker WS ODBC, JDBC und SQLJ: Datenbank-Anbindung an Anwendungsprogramme

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

MySQL Installation. AnPr

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Installation mit Lizenz-Server verbinden

Lokale Installation von DotNetNuke 4 ohne IIS

Verbinden von IBM Informix mit Openoffice mittels JDBC

Datenbanksysteme 2015

KIP Druckerstatus Benutzerhandbuch KIP Druckerstatus Installations- und Benutzerhandbuch

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

Installationsanleitung dateiagent Pro

Klausur zur Vorlesung Datenbanksysteme I

Transkript:

Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück

Kapitel 8a: Datenbankapplikationen

ODBC & JDBC ODBC & JDBC Was ist ODBC & JDBC? ODBC = Open Database Connectivity JDBC = JAVA Database Connectivity Software zum Zugriff auf heterogene DBMS-Landschaft... insbesondere verschiedene Hersteller (weiteres auf Folie 5) Unterstützt Anfragen über mehrere Tabellen aus unterschiedlichen Quellen (Verknüpfung verteilter DBMS Joins) Unterstützung dynamischer Anfragen Festlegung eines Sprachstandards (ODBC-SQL) diverse Features (Stored Procedures, Trigger...) Festlegung von Datentypen etwa für... numerische Werte, Strings, Datum, Zeit... Festlegung einer Programmiersprachenkopplung (CLI = Call Level Interface mehr auf nächster Folie)

ODBC & JDBC ODBC & JDBC Was ist CLI? Funktionsbasierte Aufrufschnittstelle Kommt in vielerlei Ausprägung vor... z.b. OCI (Oracle), ODBC (Microsoft), DB Library (Sybase), CLI (SQL Access Group) Aufgaben Verbindungsmanagement SQL-Anweisungen verarbeiten Ergebnisse und Fehler verarbeiten Beispiel JDBC JDBC-Treiber transportiert nur SQL-Kommandos Definiert nicht, welche Kommandos verw. werden dürfen SUN verlangt aber, dass alle JDBC-Treiberhersteller mindestens SQL-2 Entry-Level-Standard von 1992 erfüllen. Was passiert bei Wechsel der Datenbank (Aufwand)?

ODBC & JDBC ODBC & JDBC Warum will man ODBC & JDBC? Firmen setzen vernetzte Computersysteme ein Daten werden meist zentral in DBMS verwaltet nicht auf Arbeitsplatzrechner In vielen Firmen werden mehrere (verschiedene) DBMS genutzt Gründe hierfür... wichtige Anwendung ist nur für bestimmtes DBMS verfügbar Performanzeigenschaften bei bestimmten DB-Funktionen gewachsene Systeme ( alte Zöpfe ) unterschiedliche Erfahrungen Ein Beispiel für eine ODBC-Nutzung...

ODBC ODBC Die Rolle von ODBC in einer komplexen Architektur... Excel Access Lohnabrechnung ODBC Treiber Manager Oracle Treiber MS SQL Server Treiber Xbase Treiber Informix Treiber EDA/SQL Treiber DB2 Gateway Treiber Client SQL*Net Net-Lib Net-Lib EDA-Link Net-Lib dbf Files Server SQL*Net Net-Lib Net-Lib EDA-Link Net-Lib Oracle7 MS SQL Server Informix Online IBM DB2 Gateway

ODBC ODBC Bestandteile einer ODBC-Architektur Anwendungen verantwortlich für Interaktion mit Benutzer Aufruf von ODBC-API-Funktionen Treiber-Manager lädt bei Bedarf den jeweils von Anwendung geforderten Treiber 1 delegiert Funktionsaufrufe an zuständige Treiber nächste Folie Treiber verarbeiten ODBC-Funktionsaufrufe 2 richten SQL-Anfragen an Datenquellen kapseln die gesamte DB- und Netzwerk-Funktionalität Folien 9-11 Datenquellen Datenmengen und entsprechende Umgebungen kapseln Betriebssystem, DBMS (ggf. auch Netzwerk)

ODBC ODBC Bestandteile einer ODBC-Architektur Treiber-Manager Verwaltet gleichzeitig mehrere Clients und mehrere Treiber Leitet Funktionsaufrufe an zuständige Treiber weiter Fehlerüberprüfung Verwaltung von virtuellen Methodentabellen der Treiber realisiert über DLLs oder shared objects (je nach Betriebssystem) Verwaltung über Handles (Verbindungs-/Environment-Handle) Benutzungsoberfläche Verbindung zur Datenquelle herstellen Administration Treiber hinzufügen, löschen...

ODBC ODBC Bestandteile einer ODBC-Architektur Treiber I Ein-Stufen-Treiber Ermöglicht Zugriff auf Dateibasis Datenbank und Treiber befinden sich auf demselben Rechner Treiber enthält komplette SQL-Datenbankengine: übernimmt Parsing sowie Optimieren & Ausführen von SQL- Anweisungen Mehrbenutzerzugriff und Transaktionsverarbeitung werden nicht unterstützt

ODBC ODBC Bestandteile einer ODBC-Architektur Treiber II Zwei-Stufen-Treiber Ermöglich DB-Zugriff in klassischen Client/Server-Systemen Drei Derivate: Kommunikation über das DBMS-Datenprotokoll Ersatz für die Client-Seite der proprietären DBMS-Software (MS SQL) Abbildung zwischen ODBC-API und DBMS-API Übersetzer zwischen APIs (Oracle) Zwischenschaltung von Middleware falls DBMS-Hersteller keinen ODBC-Treiber hat (optional auch Bereitstellung des Netzwerkprotokolls) Übersetzung von ODBC-SQL in jeweiliges DBMS-SQL Parsing, Syntax- & Semantikanalyse

ODBC ODBC Bestandteile einer ODBC-Architektur Treiber III Drei-Stufen-Treiber (Gateway Driver) Einsatz eines Verbindungsrechners zwischen Client und Server Performancegewinn durch Auslagerung des Clients (bspw. Nutzung der Client-CPU für Cursorverwaltung) Gateway hält üblicherweise Verbindungen zu mehreren Servern Clients müssen nur einen Treiber verwenden Vereinfachung der Administration Verlagerung der Administration auf den Gateway-Rechner Theoretisch können weitere Stufen nachgeschaltet werden

ODBC ODBC ODBC... ODBC... JDBC ODBC... ODBC.... JDBC... JDBC... JDBC...

... verschiedene JDBC-Treibertypen JDBC-ODBC-Bridge wird von SUN mitgeliefert client-seitige Installation von ODBC-Treiber erforderlich Plattformeigene Treiber: native-api partly JAVA driver client-seitige Installation eines DB-spezifischen Treibers erforderlich bspw. Oracle Thick Driver (basiert auf SQL*Net) Universelle Treiber: net-protocol fully JAVA driver Middleware-Server vermittelt auf verschiedene DBMS bspw. Symantec dbanyware Direkte JDBC-Treiber: native-protocol fully JAVA driver baut DB-Client/Server-Protokoll via JAVA TCP/IP Sockets auf (Package java.net) bspw. Oracle Thin Driver (simuliert SQL*Net)

... verschiedene JDBC-Treibertypen JDBC-ODBC-Bridge 1 4 Direkte JDBC-Treiber net-protocol fully JAVA technology-enabled driver 3 Universelle JDBC-Treiber native-protocol fully JAVA technology-enabled driver Plattformeigene JDBC-Treiber native-api partly JAVA technology-enabled driver 2

JDBC-ODBC-Bridge (Typ 1) JDBC Driver Manager Client Applet-1 Applet-2 Applet-3 Web-Server JDBC/ODBC Bridge Applet ODBC-Driver-1 ODBC-Driver-2 ODBC-Driver-Manager DB-Server A JDBC-ODBC bridge provides JDBC-API access via one or more ODBC drivers. Note that some ODBC native code and in many cases native client databases code must be loaded on each client machine that uses this type of driver. Hence this kind of driver is generally most appropriate when automatic installation and downloading of a JAVA technology application is not important.

Plattformeigene JDBC-Treiber (Typ 2) JDBC Driver Manager Client Applet-1 Applet-2 Applet-3 Web-Server Oracle Thick JAVA Driver Applet SQL*Net SQL*Net DB-Server A native-api partly JAVA technology-enabled driver converts JDBC calls into calls on the client API for ORACLE, Sybase, Informix, DB2, or other DBMS. Note that like the bridge driver, this style of driver requires that some binary code be loaded on each client machine. Hence this kind of driver is generally most appropriate when automatic installation and downloading of a JAVA technology application is not important.

Universelle JDBC-Treiber (Typ 3) <<download>> JDBC Driver Manager dbanywhere JAVA Client Applet Client Applet-1 Applet-2 Applet-3 dbanywhere Server Web-Server DB-Server A net-protocol fully JAVA technology-enabled driver translates JDBC API calls into a DBMS independent net protocol which is then translated to a DBMS protocol by a server. This net server middleware is able to connect all of ist JAVA technology-based clients to many different databases. The specific protocol used depends on the vendor. In general, this is the most flexible JDBC API alternative. It is likely that all vendors of this solution will provide products suitable for Intranet use. In order for these products to also support Internet access they must handle the additional requirements for security, access through firewalls, etc., that the Web imposes. Several vendors are adding JDBC technology-based drivers to their existing database middleware products.

Direkte JDBC-Treiber (Typ 4) <<download>> JDBC Driver Manager Client Applet-1 Applet-2 Applet-3 Web-Server Oracle Thin JAVA Driver Applet DB-Server A native-protocol fully JAVA technology-enabled driver converts JDBC technology calls into the network protocol used by the DBMSs directly. This allows a direct call from the client machine to the DBMS server and is a practical solution for Intranet access. Since many of these protocols are proprietary the database vendors themselves will be the primary source for this style of driver. Several database vendors have these in progress.

JDBC Grundlagen Prinzipielles Vorgehen Laden eines passenden DB-Treibers (z.b. Oracle Thin Driver) und Treiberregistrierung Aufbau der Verbindung (Connection) Erzeugung eines kapselnden Objektes (das das Statement- Interface implementiert) Ausführung einer Anweisung (DML+DDL) Bei DML: Verarbeiten des Ergebnisses (ResulSet; stellt u.a. Cursor bereit) Schließen des ResultSets Schließen des Statement-Objektes Schließen der Verbindung

JDBC-Beispiel (1/3) Tabelle Nodes CREATE TABLE Nodes ( NodeID VARCHAR(128), NodeName VARCHAR(128) ) Laden eines passenden DB-Treibers (z.b. Oracle Thin Driver) und Aufbau der Verbindung try { Class.forName ("oracle.jdbc.driver.oracledriver"); } catch (ClassNotFoundException e) { System.out.println ("Treiber nicht geladen!"); e.printstacktrace(); } Connection con = DriverManager.getConnection( jdbc:oracle:thin:@da.oder.dort:1521:oradb8, UName, pwd );

JDBC-Beispiel (2/3) private void doquery(string selectstatement) throws SQLException, SQLWarning { String columnname; int columncount; Object value; 1 2 3 // create a statement object so we can submit SQL statements Statement stmt = con.createstatement(); // submit a query, creating a result object ResultSet rs = stmt.executequery(selectstatement); // get metadata ResultSetMetaData meta_data = rs.getmetadata(); columncount = meta_data.getcolumncount();...

JDBC-Beispiel (3/3) } while (rs.next()) { // advance database cursor for (int i=1; i<=columncount; i++) { value = rs.getobject(i); // also: double d = rs.getdouble(i); // String s = rs.getstring(i); columnname = meta_data.getcolumnname(i); System.out.println( columnname.touppercase() + : + value); } // End For } // End While // clean up, release resources rs.close(); stmt.close();

JDBC: INSERT, UPDATE etc. Neben SELECT werden auch andere Anweisungen unterstützt (SELECT, UPDATE, DELETE, DDL-Anweisungen) Die Methode int executeupdate(string statement) liefert als Ergebniswert die Anzahl der betroffenen Tupel bspw.: boolean b = s.execute( INSERT INTO Person (PID, VNAME, NNAME, PLZ, ORT) VALUES (1119, Frank, Köster, 26121, Oldenburg ) );... int res = s.executeupdate( DELETE FROM Person WHERE PID= +pidtf.gettext());... sqlstr = UPDATE Person SET VNAME= Frank, LNAME= Köster, PLZ= 26409, ORT= Wittmund WHERE PID=1119 ; res = s.executeupdate(sqlstr);

JDBC: Prepared & Callable Statements Problem: Anweisungen (Statements) werden immer wieder neu übersetzt Prepared Statements als effizientere Alternative: Zum Beispiel: String insstr = INSERT INTO Person VALUES(?,?) ); PreparedStatement updatestmt; updatestmt = con.preparestatement(insstr); updatestmt.setint(1,1119); updatestmt.setstring(2, Frank); int i = updatestmt.executeupdate(); Anmerkung: Nicht alle DBMS erlauben Parametrisierung von Tabellennamen. Callable Statements ermöglichen den Aufruf von gespeicherten Prozeduren mit IN und OUT Parametern

JDBC: Transaktionssteuerung (1/3) Nach dem Aufbau einer JDBC-Verbindung ist die Datenbank im Auto-Commit-Modus. Es wird jede einzelne Anweisung als Transaktion betrachtet und automatisch bestätigt. Die Transaktionssteuerung erfolgt über die Methoden commit() und rollback() des Interfaces java.sql.connection Weitere Methoden sind getautocommit() und setautocommit(boolean b) Auto-Commit bedeutet hierbei, dass nach jeder Anweisung automatisch ein commit erfolgt

JDBC: Transaktionssteuerung (2/3) Es gibt verschiedene Transaktionsmodi int mode = con.gettransactionisolation() TRANSACTION_READ_UNCOMMITED erlaubt Zugriff auf noch nicht bestätigte Daten ( dirty reads ) TRANSACTION_READ_COMMITED nur lesen geschriebener Daten, das unrepeatable reads -Problem kann auftreten TRANSACTION_REPEATABLE_READS innerhalb einer Transaktion erneut gelesene Daten bleiben gleich; jedoch kann das Phantom-Problem auftreten: bei erneutem Lesen können z.b. zusätzliche Datensätze auftauchen TRANSACTION_SERIALIZABLE höchste Stufe volle Transaktionsunterstützung

JDBC: Transaktionssteuerung (3/3) Dirty Read: Unrepeatable read: Phantom: T1: write(x) T2: read(x) T1: abort T1: read(x) T2: write(x) T2: end transaction T1: read(x) T1: read range [x - y] T2: insert z, x < z < y T2: end transaction T1: read range [x - y] Read von T2 ist ungültig T1 hat zwei unterschiedliche Werte für X gelesen z ist ein Phantom- Item

JDBC: Meta-Daten Nutze ResultSet, um Daten über Ergebnisse einer Anfrage zu erhalten: ResultSetMetaData meta_data = rs.getmetadata(); columncount = meta_data.getcolumncount(); Nutze DatabaseMetaData, um über umfangreiche Methoden auf Detail wie Schema, Zugriffsrechte usw. eines DBMS abfragen zu können: DatabaseMetaData dbmd = con.getmetadata(); ResultSet rset = dbmd.getcatalogs(); int mv = dbmd.getdrivermajorversion();

Abbildung von JDBC-/SQL-Datentypen in JAVA... JDBC/SQL Typ CHAR,VARCHAR,LONGVARCHAR NUMERIC,DECIMAL BIT TINYINT SMALLINT INTEGER BIGINT REAL FLOAT,DOUBLE BINARY,VARBINARY,LONGVARBINARY DATE TIME TIMESTAMP JAVA Typ java.lang.string java.math.bigdecimal boolean byte short int long float double byte[] java.sql.date java.sql.time java.sql.timestamp

Datenbanksysteme SS 2007 Ende von Kapitel 8a: Datenbankapplikationen