vs. Fehler zur Übersetzungszeit



Ähnliche Dokumente
11 Anwendungsprogrammierung

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

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

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

2. Datenbank-Programmierung

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

Prozedurale Datenbank- Anwendungsprogrammierung

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

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

10 Anwendungsprogrammierung

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

Kapitel 11: Anwendungsentwicklung

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

Kapitel 11: Anwendungsentwicklung

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

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

Gesicherte Prozeduren

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

Kommunikation und Datenhaltung

Datenbank und Informationssysteme

Oracle: Abstrakte Datentypen:

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

Softwareentwicklung mit JAVA EE

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

Kapitel 11: Anwendungsentwicklung

Wie kommen die Befehle zum DBMS

Webbasierte Informationssysteme

JDBC. Allgemeines ODBC. java.sql. Beispiele

10. Anwendungsprogrammierung. Client-Server-Architektur

Praktikum Datenbanksysteme

Beispiel: DB-Mock (1/7)

Java: MySQL-Anbindung mit JDBC.

3. Stored Procedures und PL/SQL

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

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

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

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Datenbanken & Informationssysteme Übungen Teil 1

Kurzeinführung ODBC. 1 Codebeispiele. 1.1 Embedded SQL

JDBC Datenzugriff aus Java ETIS SS04

6.9 Java Server Pages

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

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

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

Client/Server-Programmierung

Willkommen. Datenbanken und Anbindung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

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

Dokumentation zur Anlage eines JDBC Senders

Datenbankprogrammierung 1

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

DB2 Kurzeinführung (Windows)

Kapitel DB:VI (Fortsetzung)

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

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

Datenbanksysteme SS 2007

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

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

Wie kommen die Befehle zum DBMS

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

Datenmanagement in Android-Apps. 16. Mai 2013

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join

C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET. Leibniz Universität IT Services Anja Aue

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

Datenbankanwendungen (JDBC)

Architekturen. DB-Anwendungen: Aufgaben. Aufteilung der Funktionen. ƒ Datenbankanwendungen

Klausur zur Vorlesung Datenbanksysteme I

desk.modul : WaWi- Export

JDBC. Java DataBase Connectivity

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

Webbasierte Informationssysteme

Referenzielle Integrität SQL

Java und Datenbanken

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

Datenbanksysteme 2 Fachbereich Angewandte Informatik WS 11/12 Dipl.-Inf. Christian Pape. 6. Übung

Installationsbeschreibung Flottenmanager 7.1

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Labor 3 - Datenbank mit MySQL

JSP, Tomcat, JDBC. Agenda. Übung Informationsintegration JSP & Tomcat JDBC. l Syntax. l Implizite Objekte. l Direktiven

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

Hauptschritte einer JDBC-App

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

Datenbank Anbindung. Arthur Zaczek. Nov 2014

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Einstellungen zur Verwendung von Flashback-Abfragen

Kapitel 10: Datenbankzugriff & Pufferung 2

A Generic Database Web Service for the Venice Lightweight Service Grid

Adminer: Installationsanleitung

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

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

Datenbankzugriff mit JDBC

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

Transkript:

Client-Server-Architektur, Anbindung von Programmiersprachen, Call-Level-Schnittstellen: /, JDBC, :, J, gespeicherte Prozeduren, prozedurale Erweiterungen: /PSM, PL/. IPD, Forschungsbereich Systeme der Informationsverwaltung IWM: Schnittstellen und Anwendungsprogrammierung 2 Client (Dienstnehmer) 1. Anforderung Server (Diensterbringer) 2. Bearbeitung 3. Antwort Typische Architektur von DB-Anwendungen, da zentrale Verwaltung durch DBMS notwendig. Prinzip: Client nimmt Dienste eines Servers in Anspruch. Datenbank: DB der Personalabteilung enthält Mitarbeiter-Daten Stammdaten, Kompetenzen, vergangene Projekte, etc. Anwendung: Programm, das Teamleiter für konkrete Projekte Mitarbeiter vorschlägt. IWM: Schnittstellen und Anwendungsprogrammierung 3 IWM: Schnittstellen und Anwendungsprogrammierung 4 Funktionsintegration: unterschiedliche Applikationen nutzen gemeinsamen Code, Redundanzfreiheit Transaktionsübergreifende Optimierung: In welcher Reihenfolge erfolgen die Zugriffe auf die Datenbank? Fehler: Programmierfehler in zur Übersetzungszeit entdecken Sicherheit:Zugriffskontrolle der Datenbank schützt 'Business-Wissen' im Code Performanz: Ausführung 'nahe' an den Daten vs. Fehler zur Übersetzungszeit IWM: Schnittstellen und Anwendungsprogrammierung 5 IWM: Schnittstellen und Anwendungsprogrammierung 6

IWM: Schnittstellen und Anwendungsprogrammierung 7 vs. Schema-spezifische Fehler Anwendungsprogramm PASCAL Datenbank Relation SELECT Ename, Sal FROM Empl WHERE Job = "Professor"; Relation nicht in Datenbank Programmiersprachen einzelne Datenitems als zugrundeliegende Struktur, Menge von Tupeln, Impedance Mismatch: wird benötigt für Übergang von Mengen auf Items IWM: Schnittstellen und Anwendungsprogrammierung 8 -Code zur Entwicklungszeit / Laufzeit erzeugen wann Fehler entdecken? wann optimieren? Art der Anbindung an Programmiersprachen Entwicklungsaufwand, Sicherheit der Sprache Art der an DB Code eingebettet im DB-Server vs. Zugriff über externe Schnittstellen enge, PL/ Zugriff von irgendwo, J -Code IWM: Schnittstellen und Anwendungsprogrammierung 9, JDBC IWM: Schnittstellen und Anwendungsprogrammierung 10 Call-Level-Interface: Bibliothek von Prozeduren/Funktionen zur Kommunikation mit dem DBMS, Definition und Ausführung von Anfragen, Anwendung ResultSet rs = Verarbeitung von Ergebnissen. IWM: Schnittstellen und Anwendungsprogrammierung 11 IWM: Schnittstellen und Anwendungsprogrammierung 12

IWM: Schnittstellen und Anwendungsprogrammierung 13 JDBC Java Database Connectivity. /-konforme Implementierung des Datenbankzugriffs für Java API für die Übergabe von -Kommandos Zugriff auf verschiedene Datenbanksysteme über systemspezifische Treiber möglich, Registrierung von Datenquellen mit Name, System, Treiber, Verbindungsinformation. Achtung: nur die Schnittstelle ist definiert, d.h., spezifische Eigenheiten von unterschiedlichen DBMS müssen weiter beachtet werden! Java-Package java.sql wichtige Klassen dieses Packages: DriverManager: Einstiegspunkt, Laden von Treibern und Grundlage für Aufbau der Datenbankverbindung, Connection: Datenbankverbindung, Statement: Ausführung von Anweisungen über eine Verbindung, ResultSet: verwaltet Ergebnisse einer Anfrage in Form einer Relation, Zugriff auf einzelne Spalten. IWM: Schnittstellen und Anwendungsprogrammierung 14 1. Aufbau einer Verbindung zur Datenbank: Angabe der Verbindungsinformationen, Auswahl und Laden des Treibers, 2. Senden einer -Anweisung: Definition der Anweisung als String, Übergabe von Parametern insert into <wohin?> values (<was?>) 3. Verarbeiten der Anfrageergebnisse: Navigation über Ergebnisrelation, Treiber laden, z. B.: DriverManager.registerDriver(new oracle.jdbc.driver.oracledriver()); Auch möglich: System-Property mit Treiber-Namen, die automatisch geladen werden. Zugriff auf Spalten. IWM: Schnittstellen und Anwendungsprogrammierung 15 IWM: Schnittstellen und Anwendungsprogrammierung 16 Verbindung herstellen: Connection con; // Connection-Objekt con = DriverManager.getConnection ("jdbc:oracle:thin:@benriach:1521:tox", Anweisungsobjekt (Statement) erzeugen: Statement stmt = con.createstatement(); Anweisung ausführen: String query = "SELECT titel, preis FROM buch"; ResultSet rs = stmt.executequery(query); zu verwendender Treiber. mehrere parallele Verbindungen möglich, d.h. paralleler Zugriff auf unterschiedliche Datenbanken IWM: Schnittstellen und Anwendungsprogrammierung 17 IWM: Schnittstellen und Anwendungsprogrammierung 18

IWM: Schnittstellen und Anwendungsprogrammierung 19 Klasse java.sql.statement: Ausführung von Anfragen (SELECT) mit executequery, Ausführung von Änderungsanweisungen (DELETE, INSERT, UPDATE) mit executeupdate. Hat Ergebnis vom Typ int Anzahl der Tupel, die geupdatet wurden. Navigation über Ergebnismenge (-Prinzip): while (rs.next ()) { // Verarbeitung der einzelnen Tupel... } Zugriff auf Spaltenwerte des aktuellen Tupels über gettype-methoden über Spaltenindex: String titel = rs.getstring(1); über Spaltenname: String titel = rs.getstring("titel"); IWM: Schnittstellen und Anwendungsprogrammierung 20 Fehlerbehandlung mittels Exception- Mechanismus, Exception für alle - und DBMS-Fehler: try { // Aufruf von JDBC-Methoden... } catch (Exception exc) { System.out.println (SException:"+ exc.getmessage ()); } enge, PL/ Zugriff von irgendwo, J -Code IWM: Schnittstellen und Anwendungsprogrammierung 21, JDBC IWM: Schnittstellen und Anwendungsprogrammierung 22 In Anwendungsprogramm eingestreute -Anweisungen. Precompiler erledigt Umsetzung in Prozeduraufrufe einer Bibliothek. Schlüsselwort exec sql oder anderes Erkennung durch Precompiler Beispiel J Codefragment: String vname; int vsalary;... #sql { SELECT Ename, Sal INTO :vname, :vsalary FROM Emp WHERE Job = "Professor" }; IWM: Schnittstellen und Anwendungsprogrammierung 23 IWM: Schnittstellen und Anwendungsprogrammierung 24

IWM: Schnittstellen und Anwendungsprogrammierung 25 Insbesondere im Vergleich zu JDBC: Kompakter Code Syntax- und Semantik-Check der - Statements zur Übersetzungszeit, gut für Performance. J Codefragment: String vname; int vsalary; String vjob; Java.sql.Timestamp vdate;... #sql { SELECT Ename, Sal INTO :vname, :vsalary FROM Emp WHERE Job = :vjob and HireDate = :vdate }; D. h. wir greifen auf das erste Tupel zu. IWM: Schnittstellen und Anwendungsprogrammierung 26 Entsprechendes JDBC Codefragment: String vname; int vsalary; String vjob; Java.sql.Timestamp vdate;... PreparedStatement stmt = connection.preparestatement( "SELECT Ename, Sal " + "INTO :vname, :vsalary " + "FROM Emp " + "WHERE Job = :vjob and HireDate=:vDate"); stmt.setstring(1, vjob); stmt.settimestamp(2, vdate); ResultSet rs = stmt.executequery(); rs.next(); vname = rs.getstring(1); vsalary = rs.getint(2); rs.close(); enge, PL/ Zugriff von irgendwo, J, JDBC -Code IWM: Schnittstellen und Anwendungsprogrammierung 27 IWM: Schnittstellen und Anwendungsprogrammierung 28 Wertübernahme aus Wirtssprache Sowohl enge als auch e des -Codes. Anfragen als Zeichenketten: exec sql begin declare section; AnfrageString char(256) varying; exec sql end declare section; exec sql declare AnfrageObjekt statement; AnfrageString := 'DELETE FROM Buch_Versionen ' + 'WHERE ISBN =? AND Auflage =?' ; exec sql prepare AnfrageObjekt from :AnfrageString; exec sql execute AnfrageObjekt using :LöschISBN, :LöschAuflage; IWM: Schnittstellen und Anwendungsprogrammierung 29 enge, PL/ Zugriff von irgendwo, J, JDBC -Code IWM: Schnittstellen und Anwendungsprogrammierung 30

IWM: Schnittstellen und Anwendungsprogrammierung 31 Probleme von und : Ständiger Wechsel der Ausführungskontrolle zwischen Anwendung und DBS; Kontextwechsel. Anweisungsübergreifende Optimierung kompliziert Ausweg gespeicherte Prozeduren ( um Ablaufkonstrukte erweitern ): Im Datenbank-Server verwaltete und auch dort ausgeführte Software-Module in Form von Prozeduren bzw. Funktionen Funktionsintegration. Aufruf aus Anwendungen und Anfragen heraus. IWM: Schnittstellen und Anwendungsprogrammierung 32 Erzeuge, Navigiere über, modifiziere/lösche Tupel unter dem DECLARE a T1.e%TYPE; b T1.f%TYPE; CURSOR T1 IS SELECT e, f FROM T1 WHERE e < f FOR UPDATE; BEGIN OPEN T1; LOOP FETCH T1 INTO a, b; EXIT WHEN T1%NOTFOUND; DELETE FROM T1 WHERE CURRENT OF T1; /* Insert the reverse tuple: */ INSERT INTO T1 VALUES(b, a); END LOOP; /* Free cursor */ CLOSE T1; END;. run; -Erweiterungen IBM DB2: /PSM, Informix: SPL, Sybase, Microsoft Server: Transact-, externe Routinen: Implementiert z. B. in C, Java. z IWM: Schnittstellen und Anwendungsprogrammierung 33 IWM: Schnittstellen und Anwendungsprogrammierung 34