Kapitel DB:VI (Fortsetzung)

Ähnliche Dokumente
Kapitel DB:VI (Fortsetzung)

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

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

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

JDBC. Java DataBase Connectivity

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

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

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

11 Anwendungsprogrammierung

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

JDBC. Allgemeines ODBC. java.sql. Beispiele

Oracle & Java HOW TO

Willkommen. Datenbanken und Anbindung

Datenbank und Informationssysteme

Hauptschritte einer JDBC-App

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

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

Java Database Connectivity. Gracin Denis, IB 4 C

Webbasierte Informationssysteme

Java Database Connectivity-API (JDBC)

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

Hauptschritte einer JDBC-App

Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können!

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

Client/Server-Programmierung

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

Klausur Datenbanken II

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

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Java Database Connectivity-API (JDBC)

vs. Fehler zur Übersetzungszeit

Datenbankzugriff mit JDBC

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Webbasierte Informationssysteme

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

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Beispiel: DB-Mock (1/7)

Wie kommen die Befehle zum DBMS

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

Praktikum Datenbanksysteme

Softwareentwicklung mit JAVA EE

Datenbanksysteme 2011

PHP- Umgang mit Datenbanken (1)

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

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

Lambda Expressions in Java 8

Vorlesung Informatik II

FileMaker und Java...und es öffnen sich neue Welten!

Java Database Connectivity-API (JDBC)

JDBC Datenzugriff aus Java ETIS SS04

MySQL mit MyLinux. 2/2003 Java unter Linux

Verbinde die Welten. Von Oracle auf MySQL zugreifen

Prof. Dr.-Ing. Wolfgang Lehner. Externe User Defined Functions und externe Stored Procedures

Wie kommen die Befehle zum DBMS

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

Datenbank Anbindung. Arthur Zaczek. Nov 2014

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

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

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

Prozedurale Datenbank- Anwendungsprogrammierung

Kurzübersicht JDBC. Marc Monecke. 15. Januar 2003

6. Übung - Datenbankprogrammierung

Tag 5 Inhaltsverzeichnis

10 Anwendungsprogrammierung

Klausur zur Vorlesung Datenbanksysteme I

Tag 5 Inhaltsverzeichnis

Java und Datenbanken Ein Überblick

Oracle: Abstrakte Datentypen:

Kapitel 11: Anwendungsentwicklung

Eine weitere Möglichkeit "die grosse weite Welt" zu erschliessen sind ODBC/JDBC bzw. ESS Verbindungen.

Datenbankanwendungen (JDBC)

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

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

embedded SQL Embedded SQL wurde erstmals im SQL92- Standard definiert.

Anwendungsprogrammierung mit JDBC

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

DB-Anwendungsprogrammierung

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 18. Dez Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 8

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

11. Datenbankschnittstellen

DBS: Anwendungsprogrammierung

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Datenbanksysteme 2015

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

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

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

Transaktionen in der Praxis. Dr. Karsten Tolle

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

Übung3. Test der Möglichkeiten des JDBC-Interfaces. Prof. Dr. Andreas Schmietendorf 1. Übung 3

Kurzeinführung ODBC. 1 Codebeispiele. 1.1 Embedded SQL

SQL Tutorium Documentation

Einführung in die Informatik II

Teil VIII. Weitere Datenbanksprachen

2 Anlegen und Konfigurieren von Datenbanken 35

APEX 5.0 als wertvolle Ergänzung einer SharePoint-Umgebung. Alexej Schneider DOAG 2015

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

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

Datenbank und Informationssysteme

PHP. Prof. Dr.-Ing. Wolfgang Lehner. Diese Zeile ersetzt man über: Einfügen > Kopf- und

Transkript:

Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus DB:VI-136 SQL STEIN 2004-2017

Anwendungsszenarien Client 1 Anwendung (Web-Browser) Server DBMS (Online-Shop) Client 2 Anwendung (Produktpflege) DB:VI-137 SQL STEIN 2004-2017

Anwendungsszenarien Client 1 Anwendung (Web-Browser) Server DBMS (Online-Shop) Client 2 Anwendung (Produktpflege) Server 1 Client DBMS 1 (Oracle) Anwendung (PPS-System) Server 2 DBMS 2 (Sybase) DB:VI-138 SQL STEIN 2004-2017

Prinzipien zur DBMS-Anbindung 1. Anreicherung von Programmiersprachen durch Datenbankoperationen 2. Einbettung von Datenbanksprachen in Programmiersprachen Prinzip: SQL-Anweisungen werden im Programmquelltext ausgezeichnet Vorteil: (SQL-)Statements lassen sich zur Übersetzungszeit überprüfen und optimieren Beispiel: Embedded SQL; Realisierung für die Programmiersprache Java heißt SQLJ Erweiterung: Dynamic SQL DB:VI-139 SQL STEIN 2004-2017

Prinzipien zur DBMS-Anbindung 1. Anreicherung von Programmiersprachen durch Datenbankoperationen 2. Einbettung von Datenbanksprachen in Programmiersprachen Prinzip: SQL-Anweisungen werden im Programmquelltext ausgezeichnet Vorteil: (SQL-)Statements lassen sich zur Übersetzungszeit überprüfen und optimieren Beispiel: Embedded SQL; Realisierung für die Programmiersprache Java heißt SQLJ Erweiterung: Dynamic SQL 3. Programmierschnittstelle (API, Application Programming Interface) Prinzip: SQL-Anweisungen werden als zur Programmausführungszeit generierbarer Text an das Datenbanksystem übergeben Vorteil: hohe Flexibilität DB:VI-140 SQL STEIN 2004-2017

Bemerkungen: Eine generelle Problematik bei Programmierschnittstellen ist die Verarbeitung von Tupelmengen, die als Ergebnis einer Anfrage geliefert werden. Eine Lösung hierzu bietet das Cursor-Prinzip, das in Java (SQLJ, JDBC) als Iterator-Objekt realisiert ist. Java Database Connectivity, JDBC, ist eine Programmierschnittstelle (API) der Java-Plattform, die einen einheitlichen Zugriff auf (relationale) Datenbanken verschiedener Hersteller bietet. [wikipedia] Beispielanfrage in SQLJ (2. Prinzip) : #sql [ctx] { SELECT max(gebuehr) INTO :maxgebuehr FROM Kursgebuehr }; Entsprechende Anfrage in JDBC (3. Prinzip) : PreparedStatement stmt = myconnection.preparestatement( SELECT max(gebuehr) FROM Kursgebuehr ); ResultSet rs = statement.executequery(); int maxgebuehr = rs.getint(1); rs.close(); stmt.close(); DB:VI-141 SQL STEIN 2004-2017

JDBC-API: Treibertypen Java application JDBC API JDBC driver manager JDBC-ODBC bridge driver ODBC driver ODBC driver Oracle... IBM JDBC-Typ-1-Treiber. Übersetzung von JDBS-Aufrufen in ODBC-Aufrufe mittels eines sogenannten JDBC-ODBC-Bridge-Treibers. [Typ 2] JDBC = Java Database Connectivity ODBC = Open Database Connectivity DB:VI-142 SQL STEIN 2004-2017

JDBC-API: Vergleich mit ODBC Gegenüberstellung wichtiger Anwendungsoperationen, ODBC-Funktionsnamen und der JDBC-Implementierung: Operation (Anwendungssicht) ODBC-Funktionsname Implementierung in JDBC <class>:<method> Verbindung zu DBMS aufbauen SQLConnect DriverManager: getconnection() SQL-Anfrage ausführen SQLExecute Statement: executequery() Ergebnisse abholen SQLFetch ResultSet: next() Fehlermeldung abfragen SQLError SQLException Transaktion deklarieren SQLTransact Connection: setautocommit() Transaktion ausführen SQLTransact Connection: commit() Transaktion zurücknehmen SQLTransact Connection: rollback() Verbindung zu DBMS trennen SQLDisconnect Connection: close() DB:VI-143 SQL STEIN 2004-2017

Bemerkungen: ODBC is a standard programming language middleware API for DBMS. ODBC accomplishes DBMS independence by using an ODBC driver as a translation layer between the application and the DBMS. The application uses ODBC functions through an ODBC driver manager with which it is linked, and the driver passes the query to the DBMS. An application that can use ODBC is referred to as ODBC-compliant. Any ODBC-compliant application can access any DBMS for which a driver is installed. Drivers exist for all major DBMSs and even for text or CSV files. [wikipedia] Ein ODBC-Treiber macht eine Datenquelle (z.b. eine MySQL-Datenbank oder eine einfache Datei) zu einer ODBC-Datenquelle, die ODBC-Funktionsaufrufe versteht. ODBC ist von zwei Standpunkten aus zu betrachten: 1. Aus Sicht der Anwendung, die in der Lage ist, mit einer ODBC-Datenquelle zu kommunizieren. 2. Aus Sicht der Datenquelle, die ODBC-Anfragen verstehen und bedienen kann. DB:VI-144 SQL STEIN 2004-2017

JDBC-API: Treibertypen (Fortsetzung) Java application JDBC API JDBC driver manager JDBC DB-specific native-api driver DB-specific library DB-specific library Oracle... IBM JDBC-Typ-2-Treiber. Übersetzung von JDBS-Aufrufen in Aufrufe für einen Datenbankserver mittels einer plattform- und datenbankspezifischen Programmbibliothek. [Typ 1] DB:VI-145 SQL STEIN 2004-2017

JDBC-API: Treibertypen (Fortsetzung) Java application JDBC API JDBC driver manager JDBC middleware driver DB middleware Oracle... IBM JDBC-Typ-3-Treiber. Übersetzung von JDBC-Aufrufen in generische DBMS-Aufrufe sowie Übermittlung an die Middleware eines Anwendungsservers, welche die Aufrufe dann für spezifische Datenbankserver übersetzt. DB:VI-146 SQL STEIN 2004-2017

JDBC-API: Treibertypen (Fortsetzung) Java application JDBC API JDBC driver manager JDBC DB-specific Java driver Oracle... IBM JDBC-Typ-4-Treiber. Übersetzung von JDBC-Aufrufen für einen spezifischen Datenbankserver ohne Verwendung einer plattform- und datenbankspezifischen Programmbibliothek. DB:VI-147 SQL STEIN 2004-2017

JDBC-API: Beispiel Typ-4-Treiber package jdbc; import java.sql.*; public class JdbcDemo { public JdbcDemo() throws ClassNotFoundException { // Requires MySQL Connector/J. Class.forName("com.mysql.jdbc.Driver"); } public ResultSet submitquery( String url, String user, String pass, String query) throws SQLException { Connection connection = DriverManager.getConnection(url, user, pass); Statement statement = connection.createstatement(); ResultSet result = statement.executequery(query); return result; } DB:VI-148 SQL STEIN 2004-2017

JDBC-API: Beispiel Typ-4-Treiber (Fortsetzung) public static void main(string[] args) throws Exception { JdbcDemo demo = new JdbcDemo(); String db = "mitarbeiterdb"; String url = "jdbc:mysql://pcstein.medien.uni-weimar.de/" + db; String user = "stein"; String pass = ""; String query = "select Name, ChefPersNr " + "from mitarbeiter " + "where ChefPersNr < 8000"; ResultSet result = demo.submitquery(url, user, pass, query); } while (result.next()) { String name = result.getstring("name"); int chefpersnr = result.getint("chefpersnr"); System.out.println(name + ' ' + chefpersnr); } DB:VI-149 SQL STEIN 2004-2017

JDBC-API: Beispiel Typ-4-Treiber (Fortsetzung) public static void main(string[] args) throws Exception { JdbcDemo demo = new JdbcDemo(); String db = "mitarbeiterdb"; String url = "jdbc:mysql://pcstein.medien.uni-weimar.de/" + db; String user = "stein"; String pass = ""; String query = "select Name, ChefPersNr " + "from mitarbeiter " + "where ChefPersNr < 8000"; ResultSet result = demo.submitquery(url, user, pass, query); } while (result.next()) { String name = result.getstring("name"); int chefpersnr = result.getint("chefpersnr"); System.out.println(name + ' ' + chefpersnr); } [stein@pcstein]$ javac jdbc/jdbcdemo.java [stein@pcstein]$ java -cp.:mysql-connector-java.jar jdbc.jdbcdemo Smith 3334 DB:VI-150 SQL STEIN 2004-2017

MySQL Version 5.x [download] Besonderheiten: create table... (... ) type=innodb; Einschränkungen (u.a.) : keine Deklaration von Domains Update-Klausel darf keinen SFW-Block enthalten Neuerungen gegenüber Version 4.x (u.a.) : Stored-Procedures, Stored-Functions Default-Storage-Engine ist InnoDB benannte und aktualisierbare Sichten Cursor DB:VI-151 SQL STEIN 2004-2017