Praktikum Datenbanksysteme



Ähnliche Dokumente
Datenbank und Informationssysteme

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

JDBC Datenzugriff aus Java ETIS SS04

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

Java und Datenbanksysteme Datenbankanbindung mit JDBC

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

11 Anwendungsprogrammierung

vs. Fehler zur Übersetzungszeit

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

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

JDBC. Allgemeines ODBC. java.sql. Beispiele

2. Datenbank-Programmierung

Datenbankzugriff mit JDBC

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

Webbasierte Informationssysteme

Datenbankanwendungen (JDBC)

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

Oracle: Abstrakte Datentypen:

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

Wie kommen die Befehle zum DBMS

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

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

Verteilungsmechanismen in verschiedenen RDBMS

Datenmanagement in Android-Apps. 16. Mai 2013

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

Prozedurale Datenbank- Anwendungsprogrammierung

Java: MySQL-Anbindung mit JDBC.

Kapitel DB:VI (Fortsetzung)

3. Stored Procedures und PL/SQL

Gesicherte Prozeduren

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

Verbinden von IBM Informix mit Openoffice mittels JDBC

JDBC. Java DataBase Connectivity

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

Java Database Connectivity-API (JDBC)

Java Database Connectivity-API (JDBC)

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

Willkommen. Datenbanken und Anbindung

Datenbank Anbindung. Arthur Zaczek. Nov 2014

SQL Azure Technischer Überblick. Steffen Krause Technical Evangelist Microsoft Deutschland GmbH

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

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

Wie kommen die Befehle zum DBMS

Client/Server-Programmierung

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

Dokumentation zur Anlage eines JDBC Senders

Objektrelationale Datenbanken

Objektrelationale und erweiterbare Datenbanksysteme

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

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

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

Vorlesung Informatik II

A Generic Database Web Service for the Venice Lightweight Service Grid

Übung: Data Warehousing und Data Mining

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

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

PostgreSQL im praktischen Einsatz. Stefan Schumacher

Java Database Connectivity. Gracin Denis, IB 4 C

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

10 Anwendungsprogrammierung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken & Informationssysteme Übungen Teil 1

Kapitel 10: Datenbankzugriff & Pufferung 2

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

Verteidigung gegen SQL Injection Attacks

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

Java und Datenbanken Ein Überblick

Prüfungsberatungs-Stunde Datenbanksysteme 1 (Dbs1)

XI JDBC/IDOC Szenario

Einführung. Informationssystem als Abbild der realen Welt

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Datenbankzugriff mit JDBC

Hauptschritte einer JDBC-App

Programmieren II. Relationale Datenbanken. Vorlesung 07. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011.

6. Übung - Datenbankprogrammierung

Klausur Datenbanken II

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Prozessbeschreibung. Qualitätsberichte erstellen und vorbefüllen

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

SQL objektorientiert

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

Beispiel: DB-Mock (1/7)

Planung für Organisation und Technik

Kurzeinführung ODBC. 1 Codebeispiele. 1.1 Embedded SQL

Transkript:

Praktikum Datenbanksysteme Herbstsemester 2012 Dr. Andreas Geppert Platform Architecture Technology Infrastructure Services Credit Suisse geppert@acm.org Herbstsemester 2012 Slide 1

Themenübersicht konzeptueller Entwurf logischer Entwurf Konsistenzbedingungen Datenmanipulation Anfragen Transaktionen Sichten Stored Procedures und benutzerdefinierte Funktionen Trigger Datenbankanwendungen mit Java (JDBC, SQLJ) evtl. Web-Anwendungen mit JEE (JDBC, SQLJ) Herbstsemester 2012 Slide 2

JDBC Motivation Datenbankanbindung für Java-Anwendungen Probleme: unterschiedliche Typsysteme (Java vs. SQL) DBMS-Spezifika (SQL-Dialekte) unterschiedliche Protokolle (technisch, Netzwerk) JDBC definiert Abbildung der Typsysteme Schnittstellen für Datenbankanbindung (API) Flexibilität bzgl. Protokoll Herbstsemester 2012 Slide 3

JDBC API API definiert Schnittstellen Datenbankverbindungen (Connection) Befehle (Statement) Ergebnisse (ResultSet) Metadaten (versch. Formen) Treiber (Driver) implementiert API Treiber-Manager (DriverManager) registriert Treiber kann Verbindungsanfragen weiterleiten Java-App. JDBC-API JDBC-Treiber Herbstsemester 2012 Slide 4

JDBC Treiber Java App Java App Java App Type 1 Driver (JDBC/ODBC-Bridge) Type 2 Driver Type 3 Driver Java App ODBC-Driver Native Library/Client Proprietary protocol Independent protocol JDBC-server Type 4 Driver DBMS-specific protocol Herbstsemester 2012 Slide 5

JDBC Treiber (2) Treiberklassen müssen geladen sein mittels Properties-File durch Application-Server explizit // load driver Class.forName("org.postgresql.Driver "); // Typ 4 Class.forName("COM.ibm.db2.jcc.DB2Driver"); // Typ 4 Class.forName("COM.ibm.db2.jdbc.net.DB2Driver"); // Typ 3 Class.forName("COM.ibm.db2.jdbc.app.DB2Driver"); // Typ 2 Herbstsemester 2012 Slide 6

JDBC Typische Verarbeitungssequenz DriverManager getconnection() Connection createstatement(), preparestatement() Statement execute() executequery() ResultSet Herbstsemester 2012 Slide 7

JDBC Datenbankverbindungen Grundlage des Datenbankzugriffs über JDBC erhältlich vom Treiber-Manager Treiber-Manager ermittelt geeigneten Treiber basierend auf Datenbank-URL jdbc:postgresql://localhost:5432/cashdb jdbc:db2:mydb jdbc:db2://myhost.mydomain.com:6789/mydb jdbc:oracle:oci:@ jdbc:oracle:thin:@myhost:1521:myorainst alternativ DB-Verbindung durch Datenquelle (DataSource) zusätzlich Verwaltung von Connection Pools Herbstsemester 2012 Slide 8

JDBC Statements einfache Statements erzeugt mit Connection.createStatement() SQL-Befehle als Zeichenkette Konvertierung in SQL-Formate durch Appl. execute, executequery, executeupdate, Prepared Statements parametrisiert (? als Platzhalter) erzeugt mit Connection.prepareStatement(SQL-Befehl) mit unterschiedlichen aktuellen Params mehrfach ausführbar Methoden zum Setzen von Parametern setint, setstring, etc. execute, executequery, executeupdate, Herbstsemester 2012 Slide 9

JDBC Statements (cont.) & Ergebnisse Callable Statements für Prozeduraufrufe Ergebnismengen (ResultSet) Ergebnis von Anfragen vgl. mit Cursors Verarbeitung durch Iteration Spezialfall: mehrere Ergebnismengen Zahl der geänderten Tupel im Fall von Aenderungen Herbstsemester 2012 Slide 10

JDBC Standardisierung und Implementierung JDBC: standardisiert als Teil von J2EE Treiber erhältlich für viele DBMS JDBC 2 erweitert JDBC 1 flexiblere Verarbeitung von Ergebnismengen Aenderung von Ergebnissen während Iteration objektrelationale Konzepte Referenztypen strukturierte Typen (UDTs) Arrays unterschiedlicher Implementierungsstand je nach DBMS! Herbstsemester 2012 Slide 11

SQLJ statische Anbindung für Java an relationale DBS statisch: Ueberprüfung von Anfragen / DB-Befehlen zur Kompilationszeit Anfragen / DB-Befehlen müssen im Vorhinein bekannt sein modolo Parametrisierung mehr Garantien bzgl. Korrektheit bessere Performance möglich Herbstsemester 2012 Slide 12

SQLJ Program.sqlj sqlj Exemplar DB Program.java Program_SJProfile0.ser javac Program.class Program_SJProfileN.ser Herbstsemester 2012 Slide 13

SQLJ: Präprozessor Präprozessor überprüft Syntax Syntaxfehler werden erkannt und rapportiert offline checking generiert reinen Java-Code optional: Ueberprüfung der Semantik von Anfragen/Befehlen "online checking" basierend auf Beispiel-DB ( exemplar database ) Typkorrektheit etc. Customizing für DBMS Herbstsemester 2012 Slide 14

SQLJ: Syntax SQL-Anweisungen im Java-Code durch #sql markiert Bsp: #sql { select count(*) into :cnt from vehicle }; Context: Abstraktion von (JDBC-) Connections erlaubt mehrere simultane Verbindungen Bsp: #sql Context CashContext;... CashContext ctxt = new CashContext(...); #sql [ctxt] { select count(*) into :cnt from vehicle }; Herbstsemester 2012 Slide 15

SQLJ: Iteratoren Verarbeitung von Ergebnismengen: in SQLJ mit Iteratoren "benannte" Iteratoren: definieren Attributname/Typ Generator erzeugt Zugriffsmethode Zugriff auf Ergebnisattribute mit generierten Methoden #sql iterator MemberIterator(int membernr, String name);... MemberIterator mit = null; #sql [ctxt] mit = { select m.membernr, m.oid->getmembername as name...}; while (mit.next()) {... } Herbstsemester 2012 Slide 16

SQLJ: Iteratoren #sql iterator MemberIterator(int membernr, String name);... MemberIterator mit = null; #sql [ctxt] mit = { select m.membernr, m.oid->getmembername as name...}; while (mit.next()) { System.out.println("member " + mit.membernr() + " heisst " + mit.name()); } mit.close(); Herbstsemester 2012 Slide 17

SQLJ: Parameter Angabe von Parametern möglich int nr = 4711; #sql [ctxt] { delete from member where m.membernr = :nr }; Aenderungen: Anzahl geänderter Tupel ExecutionContext ectxt = ctxt.getexecutioncontext(); #sql [ctxt, ectxt] { delete from member where m.membernr = :nr }; System.out.println("Anzahl geloeschter Tupel: " + ectxt.getupdatecount()); Herbstsemester 2012 Slide 18