Webbasierte Informationssysteme

Ähnliche Dokumente
Webbasierte Informationssysteme

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

Exercises for the course Databases and Information Systems I WS 2006/2007 Special exercise JDBC

Java-Datenbankzugriff mit JDBC

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

Grundlagen von Datenbanken SS Einführung in das Thema

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

Klausur Datenbanken II

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

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

Client/Server-Programmierung

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

Java: MySQL-Anbindung mit JDBC.

Datenbank und Informationssysteme

Client/Server-Programmierung

Datenbanksysteme 2011

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

Grundlagen von Datenbanken

JDBC. Java DataBase Connectivity

vs. Fehler zur Übersetzungszeit

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

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

PROGRAMMIERPROJEKT 2016 VERWENDETE TECHNOLOGIEN

Oracle & Java HOW TO

Willkommen. Datenbanken und Anbindung

11 Anwendungsprogrammierung

Einordnung von Middleware

Vorlesung Informatik II

Beispiel: DB-Mock (1/7)

Übersicht. Relationale Datenbanken SQL - Structured Query Language JDBC - Java Datenbank Schnittstelle Beispielanwendung. R. Kopetzky 7.

Datenbankschnittstellen erlauben Zugriff auf Datenbank aus einer externen Anwendung

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

Kapitel DB:VI (Fortsetzung)

JDBC. Allgemeines ODBC. java.sql. Beispiele

Universität Augsburg, Institut für Informatik WS 2011/2012 Prof. Dr. W. Kießling 09. Dez Dr. M. Endres, Dr. S. Mandl, F. Wenzel Lösungsblatt 6

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

Datenbanken & Informationssysteme Übungen Teil 1

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Ziel: wie kann man in Java auf Datenbanken zugreifen und Daten manipulieren? dazu brauchen wir:

Hauptschritte einer JDBC-App

PROG O RAMMIE MMI RPROJ O EKT K

Garten - Daten Bank. - survival pack -

Kapitel 11: Anwendungsentwicklung

RELATIONONALE DATENBANKEN MIT JDBC

MySQL mit MyLinux. 2/2003 Java unter Linux

Java Database Connectivity-API (JDBC)

Oracle: Abstrakte Datentypen:

Objektorientierte Datenbanken

PHP- Umgang mit Datenbanken (1)

Kapitel 11: Anwendungsentwicklung

Wiederholung VU Datenmodellierung

Hauptschritte einer JDBC-App

MySQL mit MyLinux. 2/2003 Java unter Linux

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Einführung in die Informatik II

Java Database Connectivity-API (JDBC)

Udo Matthias Munz. Datenbanken und SQL. mit. Einführung. Informationstechnik

Es geht also um die sogenannte SQL- Data Definition Language.

Klausur zur Vorlesung Datenbanksysteme I

Datenbankzugriff mit JDBC

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

Wiederholung VU Datenmodellierung

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

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

Datenbanken SQL-Grundlagen JDBC SQL-Constraints. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

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

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

Garten -Daten Bank. Was ist das? Dr. Karsten Tolle PRG2 SS 2015

Garten -Daten Bank. -survivalpack - Dr. Karsten Tolle PRG2 SS 2016

10 Anwendungsprogrammierung

Kapitel DB:VI (Fortsetzung)

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Es geht also im die SQL Data Manipulation Language.

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Garten -Daten Bank. Was ist das? Dr. Karsten Tolle PRG2 SS 2014

Modifikation der Datenbank

Die Anweisung create table

Am Campus Bockenheim, im Sozialzentrum/Neue Mensa Foyer. zwischen 10 Uhr und 16 Uhr Der Eintritt ist kostenfrei.

Übersicht der wichtigsten MySQL-Befehle

Datenbankschnittstellen erlauben Zugriff auf Datenbank aus einer externen Anwendung

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java)

Java Database Connectivity. Gracin Denis, IB 4 C

SQL,Teil 2: SELECT. W. Spiegel. Übersicht SELECT. Mehrfache Werte vermeiden: SELECT DISTINCT. Ausgabe ordnen: ORDER BY. Projektion.

2. Web-Anbindung von Datenbanken

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

Daten Bank. 4. Vorlesung. Dr. Karsten Tolle PRG2 SS 2012

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Transkript:

SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen) Woraus besteht eine Tabelle? Tabellenname Zeile=Datensatz=Tupel 22 22.6.04 13 Reich 44 Attributwert Spalte=Attribut - SS 2004 - Prof. Dr. Stefan Böttcher Folie 2 Prof. Dr. Stefan Böttcher 1

Warum Datenbanksysteme (1)? Anfrageoptimierung: Zeitgewinn bei komplexen Anfragen (mit mehreren Tabellen-Verknüpfungen) : bis zu Faktor 100 (und mehr) Kunden-Stammdaten kundennr name plz ort str nr - SS 2004 - Prof. Dr. Stefan Böttcher Folie 3 Warum Datenbanksysteme (2)? Transaktionen ( =mehrere Datenbank-Aktionen zusammengefasst zu einer Einheit ) sind : Eigenschaft Bedeutung Beispiel A atomar ganz oder garnicht Überweisung C consistent korrekt Dateneingabe I isoliert ungestört von parallelen Transaktionen Flugbuchung D dauerhaft Daten gesichert Auszahlung - SS 2004 - Prof. Dr. Stefan Böttcher Folie 4 Prof. Dr. Stefan Böttcher 2

Schreib-Operationen auf Relationen Tabelle anlegen Tabelle löschen Tupel einfügen Tupel ändern Tupel löschen Spalten-Namen und -Typ angeben Tabellennamen angeben Werte angeben Schlüsselwert und neue Werte angeben Schlüsselwert angeben 22 22.6.04 13 Reich 44 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 5 Anfrage-Operationen auf Relationen Projektion Selektion Spalten nach Namen auswählen Zeilen nach Inhalten auswählen Vereinigung von 2 Tabellen mit gleichen Spaltennamen Differenz kartesisches Produkt von 2 Tabellen mit gleichen Spaltennamen alle Kombinationen von Tupeln beider Tabellen 22 22.6.04 13 Reich 44 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 6 Prof. Dr. Stefan Böttcher 3

Kartesisches Produkt B x K = alle Kombinationen von Tupeln beider Tabellen B und K 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 Kunden-Stammdaten kundennr name plz ort str nr 2 Meier - SS 2004 - Prof. Dr. Stefan Böttcher Folie 7 Kartesisches Produkt B x K = alle Kombinationen von Tupeln beider Tabellen B und K 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 Kunden-Stammdaten kundennr name plz ort str nr 2 Meier kundennr name plz ort str nr 2 Meier 2 Meier 2 Meier - SS 2004 - Prof. Dr. Stefan Böttcher Folie 8 Prof. Dr. Stefan Böttcher 4

Join B x K = alle Kombinationen von Tupeln beider Tabellen B und K, die eine Join-Bedingung erfüllen 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 Kunden-Stammdaten kundennr name plz ort str nr 2 Meier kundennr name plz ort str nr 22 22.6.04 13 1 29 29.6.04 26 1 32 29.6.04 13 2 2 Meier - SS 2004 - Prof. Dr. Stefan Böttcher Folie 9 Schreib-Operationen in SQL Tabelle anlegen Spalten-Namen und -Typ angeben create table ( bestnr int, datum Date, teil int, Kunde char(20) ); Tupel einfügen eingefügte Tupel müssen zum Schema passen Werte angeben insert into values ( 22, 22-06-04, 13, "Reich" ) ; int Date int char(20) 22 22.6.04 13 Reich 44 - SS 2004 - Prof. Dr. Stefan Böttcher Folie 10 Prof. Dr. Stefan Böttcher 5

Schema der relationalen Datenbank Zu jeder Spalte einer Tabelle gibt es einen Datentyp (=Domäne), aus dem die Attributwerte gewählt werden dürfen, z.b. bestnr ist ganzzahlig Domänen der Spalten werden bei Tabellendefinition festgelegt, z.b. create table ( bestnr int, datum Date, teil int, kunde char(20) ) ; Datensätze (=Tupel von Attributwerten) dürfen aus dem Schema (= dem kartesischen Produkt der Domänen) gewählt werden, z.b. aus int x Date x int x char(20). int Date int char(20) Zeile=Datensatz=Tupel Attributwert 22 22.6.04 13 Reich 44 Spalte=Attribut - SS 2004 - Prof. Dr. Stefan Böttcher Folie 11 Anfrage-Operationen in SQL Projektion Selektion Spalten nach Namen auswählen select * from ; * = alle Spalten select Kunde, Teil from ; Zeilen nach Inhalten auswählen select * from where teil = 13 22 22.6.04 13 Reich 44 Projektion& Selektion select teil, datum from where Kunde = "Reich" - SS 2004 - Prof. Dr. Stefan Böttcher Folie 12 Prof. Dr. Stefan Böttcher 6

Datenhaltung / Datenbankanbindung Webserver / Middleware Hersteller-eigene DB-Schnittstelle allgemeine DB- Schnittstelle (JDBC) Datenbank - SS 2004 - Prof. Dr. Stefan Böttcher Folie 13 Austauschbare Datenhaltung mit Java Database Connectivity (JDBC) Ziele : unabhängig vom Datenbanksystemhersteller unabhängig vom Datenformat ( unabhängig vom Datenmodell ) Programmsystem Datenbank- Zugriffsschicht Zieldatenbanksystem - SS 2004 - Prof. Dr. Stefan Böttcher Folie 14 Prof. Dr. Stefan Böttcher 7

Was ist und was bietet JDBC? Paket von Java-Klassen zum DB-Zugriff mit SQL vom Ziel-DBMS unabhängige API Standard seit Java 1.1 Java-Programm JDBC: API Treibermanager Treiber Zieldatenbanksystem - SS 2004 - Prof. Dr. Stefan Böttcher Folie 15 Datenbank anschließen unter ODBC 2. ODBC- Name hinzufügen 1. DB da 3. OK wählen - SS 2004 - Prof. Dr. Stefan Böttcher Folie 16 Prof. Dr. Stefan Böttcher 8

Java-Interfaces von JDBC SQLDriver : Treiber für ein Ziel-DBMS oder ODBC SQLDriverManager : registriert Treiber Connection : Für Verbindungen Statement : für Statement-Objekt, z.b. Query ResultSet : für Ergebnismenge Die Klassen zu diesen Interfaces werden von DB-Herstellern implementiert JDBC-ODBC-Brücke wird von SUN mitgeliefert - SS 2004 - Prof. Dr. Stefan Böttcher Folie 17 Datenbankzugriffe mit JDBC Treiber laden Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Verbindung herstellen con = DriverManager.getConnection("jdbc:odbc:odbc2access"); Statement-Objekte definieren Statement stmt = con.createstatement() ; Datenbank zugreifen, z.b. einfügen stmt.executeupdate( insert into Liefert values( IBM, pc500, 2500,6) ); Statement und Verbindung zum DBMS schließen stmt.close( ) ; con.close( ) ; - SS 2004 - Prof. Dr. Stefan Böttcher Folie 18 Prof. Dr. Stefan Böttcher 9

Datenbank-Anfragen mit JDBC Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection("jdbc:odbc:odbc2access"); Statement stmt = con.createstatement() ; Datenbankanfrage stellen ResultSet rsliefert = stmt.executequery( select * from Liefert where Teil = pc500 ); while ( rsliefert.next( ) ) // hole nächstes Tupel aus Result-Set { ausgabe += rsliefert.getstring( "Lieferant" ) ; // ggf. weitere Spalten ausgeben } stmt.close( ) ; con.close( ) ; - SS 2004 - Prof. Dr. Stefan Böttcher Folie 19 Datenbank anlegen mit JDBC-Programm import java.sql.*; public class dbinit { public static void main( String[] args ) { String ergebnis = "" ; try { Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Treiber für ODBC Connection con = DriverManager.getConnection("jdbc:odbc:odbc2access"); try { ergebnis = makedb( con ) ; // : :DB-Name unter ODBC System.out.println( ergebnis ) ; } finally { con.close( ) ; } } catch (Exception e) { System.out.println( e ) ; } } // main zuende public static String makedb( Connection con ) { String ausgabe="" ; // String zum Sammeln der Ausgabe try { Statement stmt = con.createstatement() ; stmt.executeupdate( "create table Liefert( Lieferant char(10), Teil char(10), Preis int, Lieferzeit int ) " ); stmt.executeupdate( "Insert into Liefert values('vobis ','pc400',1700,3)" ); stmt.close( ); // Statement schließen ausgabe += "\ndatenbank initialisiert.\n" ; } catch (Exception e) { ausgabe += "\n" + "Fehler: " + e ; } return ausgabe ; } // makedb zuende } // class dbinit zuende - SS 2004 - Prof. Dr. Stefan Böttcher Folie 20 Prof. Dr. Stefan Böttcher 10

Datenbank lesen mit JDBC-Programm (1) import java.sql.*; public class dbtab { public static void main( String[] args ) { String ergebnis = "" ; try { Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Treiber für ODBC Connection con = DriverManager.getConnection("jdbc:odbc:odbc2access"); try { ergebnis = selecttab( con, "2200" ) ; // : :DB-Name unter ODBC System.out.println( ergebnis ) ; } finally { con.close( ) ; } } catch (Exception e) { System.out.println( e ) ; } } // main zuende // es folgt noch : public static String selecttab( Connection con, String limit ) { // berechne die richtige Ausgabe siehe nächste Folie } // Funktion selecttab zuende } // class dbselect zuende - SS 2004 - Prof. Dr. Stefan Böttcher Folie 21 Datenbank lesen mit JDBC-Programm (2) import java.sql.*; public class dbtab { public static void main( String[] args ) { } public static String selecttab( Connection con, String limit ) { String ausgabe="" ; // String zum Sammeln der Ausgabe try { Statement stmt = con.createstatement() ; ResultSet rsliefert = stmt.executequery( "SELECT * FROM Liefert WHERE Preis < " + limit ) ; // Strings in SQL müßten zusätzlich in einfache Hochkommas: // "SELECT * FROM Liefert WHERE Teil = '" + limit + "'" ) ; ausgabe += "\n\nliefert:\n( Lieferant Teil Preis Lieferzeit )" ; while (rsliefert.next()) // hole nächstes Tupel aus Result-Set { ausgabe += "\n" + rsliefert.getstring("lieferant") + " " + rsliefert.getstring("teil") + " " + rsliefert.getint("preis") + " " + rsliefert.getint("lieferzeit") ; } rsliefert.close() ; stmt.close() ; // ResultSet schließen, Statement schließen } catch (Exception e) { ausgabe += "\nfehler bei Anfrage an die Datenbank:\n" + e ; } return ausgabe ; } // Funktion selecttab zuende } // class dbselect zuende - SS 2004 - Prof. Dr. Stefan Böttcher Folie 22 Prof. Dr. Stefan Böttcher 11

Zugriff auf Unix-Datenbanken Treiber laden Class c = Class.forName( com.sybase.jdbc.sybdriver"); Verbindung herstellen con = DriverManager.getConnection( "jdbc:sybase:tds:beethoven.uni-paderborn.de:4100/kunden", "userid", "password"); Internetadresse Port Datenbank Alles weitere wie für Access: Statement-Objekt definieren, Datenbank zugreifen, Statement und Verbindung zum DBMS schließen - SS 2004 - Prof. Dr. Stefan Böttcher Folie 23 2-Tier-Architektur mit Servlets Produktdatenbank HTML- Seite Eingabe Browser Client ruft generierte Seite Servlet oder CGI- Programm Server + minimale Anforderung an den Client + generiert HTML - Session-lose Kopplung: keine zwischenzeitliche Interaktion (außer Cookies) - hohe Serverlast - SS 2004 - Prof. Dr. Stefan Böttcher Folie 24 Prof. Dr. Stefan Böttcher 12