10 Anwendungsprogrammierung

Ähnliche Dokumente
11 Anwendungsprogrammierung

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

vs. Fehler zur Übersetzungszeit

10. Anwendungsprogrammierung. Client-Server-Architektur

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

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

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

Webbasierte Informationssysteme

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

DB-Entwurf & Anwendungsentwicklung. Entwurfsaufgabe. Vorgehen und Eigenschaften

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

Datenbank und Informationssysteme

Softwareentwicklung mit JAVA EE

JDBC. Java DataBase Connectivity

Client/Server-Programmierung

Willkommen. Datenbanken und Anbindung

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

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

Java: MySQL-Anbindung mit JDBC.

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

JDBC Datenzugriff aus Java ETIS SS04

2. Datenbank-Programmierung

Die Anweisung create table

Wie kommen die Befehle zum DBMS

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Java und Datenbanken

Datenbankprogrammierung 1

Kapitel DB:VI (Fortsetzung)

Praktikum Datenbanksysteme

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

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

Java und Datenbanksysteme Datenbankanbindung mit JDBC

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

Datenbankzugriff mit JDBC

Oracle & Java HOW TO

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

DBS: Anwendungsprogrammierung

Universität Augsburg, Institut für Informatik WS 2014/2015 Prof. Dr. W. Kießling 28. Nov F. Wenzel, L. Rudenko Lösungsblatt 6

Wie kommen die Befehle zum DBMS

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

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

Datenbanken. Autor Rainer Colgen (0171)

Klausur Datenbanken II

Vorlesung Informatik II

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

Java Database Connectivity-API (JDBC)

Java Database Connectivity-API (JDBC)

fbi h_da Datenbanken Kapitel 6: Prozedurale Spracherweiterungen von SQL, Stored Procedure und Trigger, JDBC Kapitel 6-1 Datenbanken 1 (Bachelor)

Datenbankanwendungen (JDBC)

Java Database Connectivity. Gracin Denis, IB 4 C

Java Database Connectivity-API (JDBC)

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

Zugriff auf die Datenbank. Ulf Leser Wissensmanagement in der Bioinformatik

Hauptschritte einer JDBC-App

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

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

Entwicklung von Web-Anwendungen mit JAVA EE

Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC

RELATIONONALE DATENBANKEN MIT JDBC

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

Java und Datenbanken Ein Überblick

11. Datenbankschnittstellen

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

Datenbank Anbindung. Arthur Zaczek. Nov 2014

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

Transkript:

10 10 10.1 Programmiersprachenanbindung 10.2 10.3 PL/SQL 169

10 Teil X 0 Programmiersprachenanbindung 1 2 3 LINQ Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 1 Programmiersprachenanbindung Programmiersprachenanbindung Kopplungsarten: prozedurale oder CALL-Schnittstellen (call level interface) Beispiele: SQL/CLI, ODBC,,... Einbettung einer DB-Sprache in Programmiersprachen statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt Beispiele: Embedded SQL, dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit Spracherweiterungen und neue Sprachentwicklungen Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 2 170 TU Ilmenau/Uni Magdeburg, WS 2011/12

10 10 Cursor-Konzept Programmiersprachenanbindung Cursor: Iterator über Liste von Tupeln (Anfrageergebnis) Anwendungsprogramm Datenbank Relation Cursor Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 3 : Überblick Datenbankzugriffsschnittstelle für Java abstrakte, datenbankneutrale Schnittstelle vergleichbar mit ODBC Low-Level-API: direkte Nutzung von SQL Java-Package java.sql DriverManager: Einstiegspunkt, Laden von Treibern Connection: Datenbankverbindung Statement: Ausführung von Anweisungen über eine Verbindung ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff auf einzelne Spalten Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 4 : Struktur DriverManager getconnection Connection createstatement Statement Statement executequery ResultSet ResultSet Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 5 TU Ilmenau/Uni Magdeburg, WS 2011/12 171

10 : Treiberkonzept Java- Applikation -API - Treibermanager Native- Protokoll- Treiber - Net- Treiber - ODBC- Bridge Native- API- Treiber DB- Middleware ODBC Client- Bibliothek Client- Bibliothek Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 6 : Ablauf 1 Aufbau einer Verbindung zur Datenbank Angabe der Verbindungsinformationen Auswahl und Laden des Treibers 2 Senden einer SQL-Anweisung Definition der Anweisung Belegung von Parametern 3 Verarbeiten der Anfrageergebnisse Navigation über Ergebnisrelation Zugriff auf Spalten Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 7 : Verbindungsaufbau 1 Treiber laden Class.forName ("com.company.dbdriver"); 2 Verbindung herstellen Connection con; String url = "jdbc:subprotocol:datasource"; con = DriverManager.getConnection (url, "scott", "tiger"); -URL spezifiziert Datenquelle/Datenbank Verbindungsmechanismus (Protokoll, Server und Port) Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 8 172 TU Ilmenau/Uni Magdeburg, WS 2011/12

10 10 : Anfrageausführung 1 Anweisungsobjekt (Statement) erzeugen Statement stmt = con.createstatement(); 2 Anweisung ausführen String query = "select Name, Jahrgang from WEINE"; ResultSet rset = stmt.executequery (query); Klasse java.sql.statement Ausführung von Anfragen (SELECT) mit executequery Ausführung von Änderungsanweisungen (DELETE, INSERT, UPDATE) mit executeupdate Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 9 : Ergebnisverarbeitung 1 Navigation über Ergebnismenge (Cursor-Prinzip) while (rset.next()) { // Verarbeitung der einzelnen Tupel... } 2 Zugriff auf Spaltenwerte über gettype-methoden über Spaltenindex String wname = rset.getstring(1); über Spaltenname String wname = rset.getstring("name"); Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 10 : Fehlerbehandlung Fehlerbehandlung mittels Exception-Mechanismus SQLException für alle SQL- und DBMS-Fehler try { // Aufruf von -Methoden... } catch (SQLException exc) { System.out.println("SQLException: "+ exc.getmessage()); } Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 11 TU Ilmenau/Uni Magdeburg, WS 2011/12 173

10 : Änderungsoperationen DDL- und DML-Operationen mittels executeupdate liefert Anzahl der betroffenen Zeilen (für DML-Operationen) Statement stmt = con.createstatement(); int rows = stmt.executeupdate( "update WEINE set Preis = Preis * 1.1 " + "where Jahrgang < 2000"); Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 12 : Transaktionssteuerung Methoden von Connection commit () rollback () Auto-Commit-Modus implizites Commit nach jeder Anweisung Transaktion besteht nur aus einer Anweisung Umschalten mittels setautocommit (boolean) Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 13 : Embedded SQL für Java Einbettung von SQL-Anweisungen in Java-Quelltext Vorübersetzung des erweiterten Quelltextes in echten Java-Code durch Translator sqlj Überprüfung der SQL-Anweisungen korrekte Syntax Übereinstimmung der Anweisungen mit DB-Schema Typkompatibilität der für Datenaustausch genutzten Variablen Nutzung von -Treibern Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 14 174 TU Ilmenau/Uni Magdeburg, WS 2011/12

10 : Prinzip -Programm -Translator Syntax- & Semantikprüfung Java-Quellcode -Profile Java-Compiler Customizer Bytecode Custom-Profile -Laufzeitsystem -Treiber Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 15 10 -Anweisungen Kennzeichnung durch #sql Deklarationen Klassendefinitionen für Iteratoren SQL-Anweisungen: Anfragen, DML- und DDL-Anweisungen #sql { SQL-Operation }; Beispiel: #sql { insert into ERZEUGER (Weingut, Region) values ( Wairau Hills, Marlborough ) }; Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 16 Host-Variablen Variablen einer Host-Sprache (hier Java), die in SQL-Anweisungen auftreten können Verwendung: Austausch von Daten zwischen Host-Sprache und SQL Kennzeichnung durch ":variable" Beispiel: String name; int weinid = 4711; #sql { select Name into :name from WEINE where WeinID = :weinid }; System.out.println("Wein = " + name); Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 17 TU Ilmenau/Uni Magdeburg, WS 2011/12 175

10 Iteratoren 1 Deklaration des Iterators #sql public iterator WeinIter (String Name, String Weingut, int Jahrgang); 2 Definition des Iteratorobjektes WeinIter iter; 3 Ausführung der Anweisung #sql iter = { select Name, Weingut, Jahrgang from WEINE }; 4 Navigation while (iter.next()) { System.out.println(iter.Name() + " "+ iter.weingut() + " "+ iter.jahrgang()); } Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 18 Dynamic SQL SQL-Statements als zur Laufzeit konstruierte Strings exec sql begin declare section; AnfrageString char(256) varying; exec sql end declare section; exec sql declare AnfrageObjekt statement; AnfrageString = delete from WEINE where WeinID = 4711 ;... exec sql prepare AnfrageObjekt from :AnfrageString; exec sql execute AnfrageObjekt; Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 19 LINQ Language Integrated Query (LINQ) Einbettung einer DB-Sprache (SQL) in eine Programmiersprache (C#) spezielle Klassenmethoden IEnumerable<string> res = weine.where(w => w.farbe = "Rot").Select(w => new { w.name }); eigene Sprachkonstrukte (ab C# 3.0) IEnumerable<op> res = from w in weine where w.farbe = "Rot" select new { w.name }; Sattler / Saake Datenbanksysteme Letzte Änderung: 11.10.2011 10 20 176 TU Ilmenau/Uni Magdeburg, WS 2011/12