Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann



Ähnliche Dokumente
Datenbanksysteme I Übung: JDBC. Jana Bauckmann

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC

Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC

Prozedurale Datenbank- Anwendungsprogrammierung

2. Datenbank-Programmierung

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

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

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

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

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

vs. Fehler zur Übersetzungszeit

Gesicherte Prozeduren

11 Anwendungsprogrammierung

Oracle: Abstrakte Datentypen:

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

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

Datenbank und Informationssysteme

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

Wie kommen die Befehle zum DBMS

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

desk.modul : WaWi- Export

Softwareentwicklung mit JAVA EE

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

Datenbankprogrammierung 1

Datenmanagement in Android-Apps. 16. Mai 2013

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

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

Datenbankzugriff mit JDBC

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

3. Stored Procedures und PL/SQL

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Wie kommen die Befehle zum DBMS

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

Kapitel DB:VI (Fortsetzung)

Java: MySQL-Anbindung mit JDBC.

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

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

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

Praktikum Datenbanksysteme

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

Übungsblatt 8- Lösungsvorschlag

1 Vom Problem zum Programm

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Grundlagen von Python

7. Übung - Datenbanken

Grundlagen der Informatik 2

Webbasierte Informationssysteme

JDBC. Allgemeines ODBC. java.sql. Beispiele

Einführung in PHP. (mit Aufgaben)

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

SQL (Structured Query Language) Schemata Datentypen

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

3 Embedded SQL. 3.1 Theorie Was ist Embedded SQL?

IV. Datenbankmanagement

DBS: Anwendungsprogrammierung

Übersicht über Datenbanken

Verteidigung gegen SQL Injection Attacks

Beispiel 19. December 4, 2009

Datenbanksysteme SS 2007

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

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

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Einführung in die Programmierung

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

Modul 122 VBA Scribt.docx

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

DB2 Kurzeinführung (Windows)

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Lehrveranstaltung Grundlagen von Datenbanken

Excel Funktionen durch eigene Funktionen erweitern.

Klausur zur Vorlesung Datenbanksysteme I

Kapitel 10 Aktive DBMS

Objektorientierte Programmierung

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

Objektrelationale Datenbanken

Java Kurs für Anfänger Einheit 5 Methoden

4D Server v12 64-bit Version BETA VERSION

Entwicklungsumgebung für die Laborübung

Kurzeinführung ODBC. 1 Codebeispiele. 1.1 Embedded SQL

Sin-Funktion vgl. Cos-Funktion

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

Vorkurs C++ Programmierung

Übung: Data Warehousing und Data Mining

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

Interaktive Webseiten mit PHP und MySQL

Programmierung von Datenbank Anwendungen

VBA-Programmierung: Zusammenfassung

1a) SQL Stored Procedure via IDs

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013

Client-Server-Beziehungen

8a. Exkurs.NET. 8a.1.NET Architektur

Transkript:

Datenbanksysteme I Datenbankprogrammierung 15.6.2009 Felix Naumann

SQL mit einer Programmiersprache verbinden 2 Embedded SQL Kombiniert SQL mit 7 Programmiersprachen ADA, C, Cobol, Fortran, M, Pascal, PL/I Einbettung von SQL durch Preprocessing Stored procedures / PSM Speicherung von Prozeduren als DBMS Objekte Aufruf aus SQL Ausdrücken (Call-level-interface (CLI) Verbindet C mit DBMS Spezielle Funktionsbibliothek Spart das Preprocessing) Java Database Connectivity (JDBC) Wie CLI aber für Java Relevant für die Übung

Überblick 3 Embedded SQL Stored procedures / PSM Call-level-interface l l (CLI) und Java Database Connectivity (JDBC)

SQL vs. Programmiersprachen 4 Bisher Generische SQL Schnittstelle Kommandozeile Von allen DBMS angeboten Selten genutzt Datenbankadmins Jetzt SQL Ausdrücke in größeren Softwarekomponenten Anwendungen DB Tools Verwendet aus einer anderen Programmiersprache heraus

Embedded SQL - Ablauf 5 Programmiersprache + Embedded SQL Präprozessor Programmiersprache + Funktionsaufrufe Compiler SQL-Bibliothek (vom DBMS Hersteller) Ausführbares Programm

Impedance Mismatch 6 Die Datenmodelle von DBMS und Programmiersprachen unterscheiden sich sehr. Programmiersprachen Integer, String, Real, Pointer Arrays Insbesondere: Keine Mengen Relationales DBMS Relationen und Attribute t Keine Pointer Keine Schleifen Keine Verzweigungen Keine komplexen Strukturen Datentransfer zwischen beiden Modellen ist also schwierig.

Impedance Mismatch 7 Alternative 1: Nur Programmiersprache verwenden Aber: SQL sehr nützliche und einfache (very high-level) Sprache Aber: Programmier sollen nichts über Speicherstruktur wissen Physische Datenunabhängigkeit! Aber: DBMS sehr effizient Alternative 2: Nur SQL verwenden Aber: In Basis-SQL nicht alles ausdrückbar Z.B. n! Aber: Ausgabe sind immer nur Relationen Und z.b. nicht Graphiken Alternative 3: Einbettung von SQL in eine Programmiersprache Programmiersprache: ac e Host language ( Wirtssprache ) SQL: Embedded SQL (eingebettetes SQL)

Beispiel 8 Tupel einfügen EXEC SQL BEGIN DECLARE SECTION; char studioname[50], studioadr[256]; char SQLSTATE[6]; EXEC SQL END DECLARE SECTION; /* Einlesen von Werten in die Variablen */ EXEC SQL INSERT INTO Studio(Name, Adresse) VALUES (:studioname, :studioadr); Klappt für jeden SQL Ausdruck, der kein Ergebnis produziert. Wegen Impedance Mismatch INSERT, DELETE, UPDATE, CREATE, DROP, Für Anfrage mit Anfrageergebnis Nur ein Tupel: Direkte Bindung an gemeinsame Variablen Mehrere Tupel: Cursor

Cursor 9 Abbildung: Kai-Uwe Sattler (TU Ilmenau)

Cursor Beispiel 10 void gehaltsbereiche() { int i, stellen, counts[15]; EXEC SQL BEGIN DECLARE SETION; int gehalt; char SQLSTATE[6]; EXEC SQL END DECLARE SETION; EXEC SQL DECLARE managercursor CURSOR FOR SELECT Gehalt FROM Manager; EXEC SQL OPEN managercursor; for(i=0; i < 15; i++) counts[i] = 0; while(1) { EXEC SQL FETCH FROM managercursor INTO :gehalt; if(strcmp(sqlstate, 02000 )) break; stellen = 1; while((gehalt /= 10) > 0) stellen++; if(stellen <= 14) counts[stellen]++; } EXEC SQL CLOSE managercursor; for (i=0; i<15; i++) printf( Stellen = %d: Anzahl Manager = %d\n, i, counts[i]); }

Überblick 11 Embedded SQL Stored procedures / PSM Call-level-interface l l (CLI) und Java Database Connectivity (JDBC)

PSM / Stored Procedures 12 PSM: Persistent, Stored Modules Gespeicherte Prozeduren Stored Procedures Speicherung von Prozeduren als Datenbankelemente Mischung aus SQL und Programmiersprache Prozeduren können in SQL Anfragen oder anderen SQL Ausdrücken verwendet werden. CREATE PROCEDURE <name> (<parameter>) lokale Variablendeklarationen body der Prozedur; CREATE FUNCTION <name> (<parameter>) RETURNS <Typ> lokale Variablendeklarationen body der Funktion;

Beispiel Cursor und Schleifen 13 Gegeben ein Studioname, berechne Mittelwert und Standardabweichung der Filmlängen des Studios CREATE PROCEDURE MeanVar( IN s CHAR[15], OUT mean REAL, OUT variance REAL ) DECLARE Not_Found CONDITION FOR SQLSTATE 02000 ; DECLARE FilmCursor CURSOR FOR SELECT Laenge FROM Filme WHERE StudioName=s; DECLARE neuelaenge INTEGER; DECLARE filmanzahl INTEGER;

Beispiel Cursor und Schleifen 14 BEGIN SET mittelwert = 0.0; SET varianz = 0.0; SET filmanzahl=0; OPEN FilmCursor; FilmLoop: LOOP FETCH FilmCursor INTO newlength; IF Not_Found THEN LEAVE FilmLoop END IF; SET filmanzahl = filmanzahl + 1; SET mittelwert = mittelwert + neuelaenge ; SET varianz = varianz + neuelaenge * neuelaenge; END LOOP; CLOSE FilmCursor; SET mittelwert = mittelwert/filmanzahl; SET varianz = varianz/filmanzahl - mittelwert * mittelwert; END;

Externe Stored Procedures 15 Stored Procedures basierend auf einem Stück Code Beispiel für DB2 CREATE PROCEDURE PARTS_ON_HAND (IN PARTNUM INTEGER, OUT COST DECIMAL(7,2), OUT QUANTITY INTEGER) EXTERNAL NAME 'parts.onhand' LANGUAGE JAVA PARAMETER STYLE JAVA Code muss in bestimmtem Verzeichnis liegen

Überblick 16 Embedded SQL Stored procedures / PSM Call-level-interface l l (CLI) und Java Database Connectivity (JDBC)

CLI: Call-Level-Interface 17 Idee Programmieren in einer Programmiersprache (Wirtssprache) Verwendung spezieller Funktionen für den Datenbankzugriff Funktionsbibliothek Umgehung des Präprozessors Kompiliertes Ergebnis ist gleich Hier: SQL/CLI Adaptiert von ODBC (Open Database Connectivity) Für die Programmiersprache C Und: JDBC (Java Database Connectivity)

Embedded SQL - Ablauf 18 Programmiersprache + Embedded SQL Präprozessor Programmiersprache + Funktionsaufrufe Compiler SQL-Bibliothek (vom DBMS Hersteller) Ausführbares Programm

JDBC: Vergleich zu SQL/CLI 19 Gleiches Ziel wie SQL/CLI Java statt C als Programmiersprache Unterschiede aufgrund der Objektorientierung ti von Java

Überblick 20 DriverManager getconnection Connection createstatement() preparestatement(q) Statement PreparedStatement executequery(q) executequery ResultSet ResultSet

Erste Schritte 21 Treiber für das DBMS einbinden DBMS spezifisch Wird jeweils mit DBMS mitgeliefert t Verbindung zur Datenbank aufbauen Connection meineconnection = DriverManager.getConnection(URL, name, password); URL ist DBMS und Datenbank-spezifisch "jdbc:subprotocol:datasource"; Connection meineconnection = DriverManager.getConnection( getconnection("jdbc:db2://paprika:50010 /FILM1DB", "db2stud","1hugo2");

Ausdrücke in JDBC 22 Statement createstatement(); Noch keiner SQL-Anfrage assoziiert PreparedStatement preparestatement(anfrage); Falls Anfrage öfters ausgeführt wird. SQL Ausdrücke ausführen (4 Varianten) 1. ResultSet meinergebnis = executequery(anfrage); ResultSet als Rückgabewert 2. ResultSet meinergebnis = executequery(); Für PreparedStatements ResultSet als Rückgabewert 3. excuteupdate(updateanfrage) t d t Kein Rückgabewert 4. excuteupdate() Für PreparedStatements Kein Rückgabewert

JDBC Beispiel 23 Gegeben die Connection meineconnection Anfrage: SELECT Gehalt FROM Manager; (2 Varianten der Ausführung) 1. Statement managerstat = meineconnection.createstatement(); createstatement(); ResultSet gehaelter = managerstat.executequery( SELECT Gehalt FROM Manager ); 2. PreparedStatement t t managerstat t = meineconnection.preparestatement( SELECT Gehalt FROM Manager ); ResultSet gehaelter = managerstat.executequery(); executequery(); Updates: Schauspieler einfügen Statement spielerstat = meineconnection.craetestatement(); spielerstat.executeupdate( INSERT INTO spielt_in VALUES( + Star Wars, 1979, Harrison Ford );

Cursor in JDBC (ResultSet) 24 Methoden des ResultSet next() liefert nächstes Tupel FALSE falls kein weiteres Tupel vorhanden getstring(i) g Liefert Wert des i-ten Attributs getint(i), getfloat(i) usw. while(gehaelter.next()){ gehalt = gehaelter.getint(1); // gehalt ausgeben o.ä. }

Parameter übergeben 25 Mittels PreparedStatement Fragezeichen als Platzhalter für Parameter Bindung mittels setstring(i, v), setint(i, v) usw. PreparedStatement studiostat = meineconnection.preparestatement( p INSERT INTO Studio(Name, Adresse) VALUES(?,?) ); // Werte für studioname und studioadr vom Nutzer einholen studiostat.setstring(1, studioname); studiostat.setstring(2, studioadr); studiostat.executeupdate();

Zusammenfassung 26 Embedded SQL Kombiniert SQL mit 7 Programmiersprachen ADA, C, Cobol, Fortran, M, Pascal, PL/I Einbettung von SQL durch Preprocessing Stored procedures / PSM Speicherung von Prozeduren als DBMS Objekte Aufruf aus SQL Ausdrücken Call-level-interface level (CLI) Verbindet C mit DBMS Spezielle Funktionsbibliothek Spart das Preprocessing Java Database Connectivity (JDBC) Wie CLI aber für Java