11 Anwendungsprogrammierung

Ähnliche Dokumente
10 Anwendungsprogrammierung

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

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

vs. Fehler zur Übersetzungszeit

10. Anwendungsprogrammierung. Client-Server-Architektur

2. Datenbank-Programmierung

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

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

Prozedurale Datenbank- Anwendungsprogrammierung

Datenbank und Informationssysteme

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

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

Kapitel DB:VI (Fortsetzung)

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Webbasierte Informationssysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

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

Java und Datenbanken

3. Stored Procedures und PL/SQL

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

Oracle: Abstrakte Datentypen:

Datenbankzugriff mit JDBC

Client/Server-Programmierung

Wie kommen die Befehle zum DBMS

Datenbankprogrammierung 1

JDBC Datenzugriff aus Java ETIS SS04

Praktikum Datenbanksysteme

JDBC. Java DataBase Connectivity

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

Gesicherte Prozeduren

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #6. SQL (Teil 4)

Die Anweisung create table

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Softwareentwicklung mit JAVA EE

Java: MySQL-Anbindung mit JDBC.

Einbettung in SQL. Zwei Prinzipien: (1) Statische Einbettung

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

DBS: Anwendungsprogrammierung

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

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren

Willkommen. Datenbanken und Anbindung

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

SQLJ SQLJ. SQL-Klauseln. Embedded SQL für Java. Einbettungsprinzip. Host-Variablen. SQLJ ist in 3 Teile gegliedert: Stefan Böttcher Sven Groppe

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

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

Inhalt. Einbettungstechniken für SQL. 1. Datenbank-Programmierung. Statische Einbettung

DB-Entwurf & Anwendungsentwicklung. Entwurfsaufgabe. Vorgehen und Eigenschaften

Klausur zur Vorlesung Datenbanksysteme I

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

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

Beispiel: DB-Mock (1/7)

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

Datenbankanwendungen (JDBC)

fbi h_da Datenbanken Kapitel 6: Prozedurale Spracherweiterungen von SQL, Stored Procedure und Trigger, JDBC Kapitel 6-1 Datenbanken 1 (Bachelor)

Prozedurale SQL-Erweiterungen

Wie kommen die Befehle zum DBMS

Oracle & Java HOW TO

Kapitel 4 Dynamisches SQL

Java Database Connectivity-API (JDBC)

SQL (Structured Query Language) Schemata Datentypen

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Übung: Data Warehousing und Data Mining

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

JDBC. Allgemeines ODBC. java.sql. Beispiele

SQL. Fortgeschrittene Konzepte Auszug

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken. Anwendungsentwicklung in Datenbanken: Prozedurale Spracherweiterung von SQL (z.b. PL/SQL bei Oracle)

Vorlesung Informatik II

Transaktionen in der Praxis. Dr. Karsten Tolle

Java Database Connectivity-API (JDBC)

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

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

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Zugriff auf die Datenbank. Ulf Leser Wissensmanagement in der Bioinformatik

Java Database Connectivity-API (JDBC)

Kapitel 4 Dynamisches SQL

Datenbanksysteme SS 2007

Transkript:

11 11 11.1 Programmiersprachenanbindung 11.2 11.3 183

11 Programmiersprachenanbindung Programmiersprachenanbindung Kopplungsarten: prozedurale oder CALL-Schnittstellen (call level interface) Beispiele: SQL/CLI, ODBC,,... Einbettung einer DB-Sprache in Programmiersprachen statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt Beispiele: Embedded SQL, SQLJ dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit Spracherweiterungen und neue Sprachentwicklungen Beispiele: SQL/PSM,, Transact-SQL, PL/pgSQL Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 2 Cursor-Konzept Programmiersprachenanbindung Cursor: Iterator über Liste von Tupeln (Anfrageergebnis) Anwendungsprogramm Datenbank Relation Cursor Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 3 : Überblick Datenbankzugriffsschnittstelle für Java abstrakte, datenbankneutrale Schnittstelle vergleichbar mit ODBC Low-Level-API: direkte Nutzung von SQL Java-Package java.sql DriverManager: Einstiegspunkt, Laden von Treibern Connection: Datenbankverbindung Statement: Ausführung von Anweisungen über eine Verbindung ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff auf einzelne Spalten Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 4 184 TU Ilmenau/Uni Magdeburg, WS 2010/11

11 : Struktur DriverManager getconnection Connection createstatement Statement Statement executequery ResultSet ResultSet Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 5 : Treiberkonzept 11 Java- Applikation -API - Treibermanager Native- Protokoll- Treiber - Net- Treiber - ODBC- Bridge Native- API- Treiber DB- Middleware ODBC Client- Bibliothek Client- Bibliothek Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 6 : Ablauf 1 Aufbau einer Verbindung zur Datenbank Angabe der Verbindungsinformationen Auswahl und Laden des Treibers 2 Senden einer SQL-Anweisung Definition der Anweisung Belegung von Parametern 3 Verarbeiten der Anfrageergebnisse Navigation über Ergebnisrelation Zugriff auf Spalten Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 7 TU Ilmenau/Uni Magdeburg, WS 2010/11 185

11 : Verbindungsaufbau 1 Treiber laden Class.forName ("com.company.dbdriver"); 2 Verbindung herstellen Connection con; String url = "jdbc:subprotocol:datasource"; con = DriverManager.getConnection (url, "scott", "tiger"); -URL spezifiziert Datenquelle/Datenbank Verbindungsmechanismus (Protokoll, Server und Port) Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 8 : Anfrageausführung 1 Anweisungsobjekt (Statement) erzeugen Statement stmt = con.createstatement(); 2 Anweisung ausführen String query = "select Name, Jahrgang from WEINE"; ResultSet rset = stmt.executequery (query); Klasse java.sql.statement Ausführung von Anfragen (SELECT) mit executequery Ausführung von Änderungsanweisungen (DELETE, INSERT, UPDATE) mit executeupdate Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 9 : Ergebnisverarbeitung 1 Navigation über Ergebnismenge (Cursor-Prinzip) while (rset.next()) { // Verarbeitung der einzelnen Tupel... } 2 Zugriff auf Spaltenwerte über gettype-methoden über Spaltenindex String wname = rset.getstring(1); über Spaltenname String wname = rset.getstring("name"); Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 10 186 TU Ilmenau/Uni Magdeburg, WS 2010/11

11 : Fehlerbehandlung Fehlerbehandlung mittels Exception-Mechanismus SQLException für alle SQL- und DBMS-Fehler try { // Aufruf von -Methoden... } catch (SQLException exc) { System.out.println("SQLException: "+ exc.getmessage()); } Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 11 : Änderungsoperationen DDL- und DML-Operationen mittels executeupdate liefert Anzahl der betroffenen Zeilen (für DML-Operationen) 11 Statement stmt = con.createstatement(); int rows = stmt.executeupdate( "update WEINE set Preis = Preis * 1.1 " + "where Jahrgang < 2000"); Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 12 : Transaktionssteuerung Methoden von Connection commit () rollback () Auto-Commit-Modus implizites Commit nach jeder Anweisung Transaktion besteht nur aus einer Anweisung Umschalten mittels setautocommit (boolean) Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 13 TU Ilmenau/Uni Magdeburg, WS 2010/11 187

11 SQLJ SQLJ: Embedded SQL für Java Einbettung von SQL-Anweisungen in Java-Quelltext Vorübersetzung des erweiterten Quelltextes in echten Java-Code durch Translator sqlj Überprüfung der SQL-Anweisungen korrekte Syntax Übereinstimmung der Anweisungen mit DB-Schema Typkompatibilität der für Datenaustausch genutzten Variablen Nutzung von -Treibern Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 14 SQLJ: Prinzip SQLJ SQLJ-Programm SQLJ-Translator Syntax- & Semantikprüfung Java-Quellcode SQLJ-Profile Java-Compiler Customizer Bytecode Custom-Profile SQLJ-Laufzeitsystem -Treiber Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 15 SQLJ-Anweisungen SQLJ Kennzeichnung durch #sql Deklarationen Klassendefinitionen für Iteratoren SQL-Anweisungen: Anfragen, DML- und DDL-Anweisungen #sql { SQL-Operation }; Beispiel: #sql { insert into ERZEUGER (Weingut, Region) values ( Wairau Hills, Marlborough ) }; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 16 188 TU Ilmenau/Uni Magdeburg, WS 2010/11

11 SQLJ Host-Variablen Variablen einer Host-Sprache (hier Java), die in SQL-Anweisungen auftreten können Verwendung: Austausch von Daten zwischen Host-Sprache und SQL Kennzeichnung durch ":variable" Beispiel: String name; int weinid = 4711; #sql { select Name into :name from WEINE where WeinID = :weinid }; System.out.println("Wein = " + name); Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 17 SQLJ Iteratoren 1 Deklaration des Iterators 11 #sql public iterator WeinIter (String Name, String Weingut, int Jahrgang); 2 Definition des Iteratorobjektes WeinIter iter; 3 Ausführung der Anweisung #sql iter = { select Name, Weingut, Jahrgang from WEINE }; 4 Navigation while (iter.next()) { System.out.println(iter.Name() + " "+ iter.weingut() + " "+ iter.jahrgang()); } Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 18 LINQ Language Integrated Query (LINQ) Einbettung einer DB-Sprache (SQL) in eine Programmiersprache (C#) spezielle Klassenmethoden IEnumerable<string> res = weine.where(w => w.farbe = "Rot").Select(w => new { w.name }); eigene Sprachkonstrukte (ab C# 3.0) IEnumerable<op> res = from w in weine where w.farbe = "Rot" select new { w.name }; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 19 TU Ilmenau/Uni Magdeburg, WS 2010/11 189

11 Oracle prozedurale Erweiterung von SQL: Blöcke, Kontrollstrukturen Impementierung von gespeicherten Modulen (Prozeduren, Funktionen, Triggern, etc.) Code, der im DBS gespeichert ist und dort auch ausgeführt wird Blockstruktur declare /* Deklaration von Variablen, Typen,...*/ begin /* prozedurale und SQL-Anweisungen */ exception /* optionale Fehlerbehandlung */ end; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 20 : Variablen und Typen unterstützte Typdeklarationen SQL-Datentypen spezifische -Typen (u.a. number, boolean) Übernahme von Typdeklarationen declare jahrgang number; name varchar(20); type WeinRecordType is record ( Name varchar(30), Weingut varchar(30), Jahrgang integer, Farbe varchar(10)); Wein WeinRecordType; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 21 : Kontrollstrukturen if i = 10 then /*... */ else /* sonst */ end if; while i < 100 loop /*... */ i := i + 1; end loop; for i in 1..100 loop /*... */ end loop; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 22 190 TU Ilmenau/Uni Magdeburg, WS 2010/11

11 : Cursor Deklaration cursor RotweinCurs is select Name, Weingut, Jahrgang from WEINE where Farbe = Rot ; abgeleitete Variablendeklarationen WeinName Wein.Name%type; WeinTupel RotweinCurs%rowtype; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 23 : Cursor /2 Verarbeitung von Anfrageergebnissen über Cursor 11 begin open RotweinCurs; loop fetch RotweinCurs into WeinTupel; exit when RotweinCurs%notfound; /* Zugriff auf WeinTupel.Name,... */ end loop; close RotweinCursor; end; alternative Notation über for-schleife begin for WeinTupel in RotweinCurs loop /* siehe oben */ end loop; end; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 24 : Prozeduren Definition einer Prozedur create procedure weinliste (erz in varchar, wliste out varchar) is pos integer := 0; cursor WeinCurs is select Name from WEINE where Weingut = erz; wrec WeinCurs%rowtype; begin for wrec in WeinCurs loop if pos > 0 then wliste := wliste, wrec.name; else wliste := wrec.name; end if; pos := pos + 1; end loop; end weinliste; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 25 TU Ilmenau/Uni Magdeburg, WS 2010/11 191

11 : Prozeduren /2 Aufruf declare liste varchar(1000); begin weinliste( Creek, liste); dbms_output.put_line(liste); end; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 26 : Funktionen Definition einer Funktion create function euro2dollar (betrag in number) as begin return betrag * 1.21; end; Nutzung auch in Anfragen select Name, euro2dollar(preis) from WEINE where euro2dollar(preis) < 20; Sattler / Saake Datenbanksysteme Wintersemester 2010/11 11 27 192 TU Ilmenau/Uni Magdeburg, WS 2010/11