DBS: Anwendungsprogrammierung

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

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

Prozedurale Datenbank- Anwendungsprogrammierung

11 Anwendungsprogrammierung

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

vs. Fehler zur Übersetzungszeit

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

Softwareentwicklung mit JAVA EE

SQL: Weitere Funktionen

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

Willkommen. Datenbanken und Anbindung

Java: MySQL-Anbindung mit JDBC.

Praktikum Datenbanksysteme

Webbasierte Informationssysteme

Datenbankprogrammierung 1

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

10. Programmieren in SQL

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

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

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

Der Einsatz von SELECT from INSERT auf dem System i

2. Datenbank-Programmierung

Klausur Datenbanken II

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

Oracle & Java HOW TO

Java Database Connectivity-API (JDBC)

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC

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

Java Database Connectivity-API (JDBC)

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Prozedurale SQL-Erweiterungen

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Praktische SQL-Befehle 2

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

Java Database Connectivity. Gracin Denis, IB 4 C

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

Kapitel 4 Dynamisches SQL

Cursor erlauben eines zeilenweise Verarbeitung einer Tabelle oder eines Anfrageergebnisses in Transact-SQL

10 Anwendungsprogrammierung

CADSTAR MRP-Link. MRP-Link ist erstellt von:

Abschluss Einblick und Ausblick

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

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

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

Embedded SQL in PostgreSQL

Entwicklung von Web-Anwendungen mit JAVA EE

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

8. Kopplung Programmiersprache - SQL

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

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

Kapitel 4 Dynamisches SQL

Datenbanken. Autor Rainer Colgen (0171)

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

11. Datenbankschnittstellen

Aufbau Datenbanksysteme

Vorlesung Informatik II

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

GML und Bibliothek oracle.sdoapi

Datenbankzugriff mit JDBC

JDBC. Java DataBase Connectivity

Datenbank und Informationssysteme

Datenbanken: Prozedurales SQL

In diesem Abschnitt wollen wir uns mit der Architektur von Datenbank Managements Systemen beschäftigen.

3. Stored Procedures und PL/SQL

Programmieren für Fortgeschrittene Einführung in die Programmiersprache ABAP

Wie kommen die Befehle zum DBMS

Wie kommen die Befehle zum DBMS

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

10. Anwendungsprogrammierung. Client-Server-Architektur

Transkript:

Bisher: Grundlagen / Theorie DBS: Anwendungsprogrammierung Daten Schema Datenbank 1 Daten Schema Datenbank 2 DBMS Benutzer 1 Benutzer 2 Benutzer n Hier: Idee der Praxis Datenbanksysteme Benutzer Anwendungskontrollkomponenten (AC) Visuelle Objekte Prozessobjekte AC_Auftrags. Auftrags daten Kunden daten Auftragsbearbeitung Business Komponenten (BC) BC_Kunde BC_Auftrag Infrastrukturkomponenten (IC) IC_DB IC_TX 1

DBS: Anwendungsprogrammierung Vorgehen beim Zugriff auf DB (Server) aus Anwendungprogrammen (Client): 1. Client öffnet einen Kanal (open connection) zu der Datenbank 2. Client stellt Anfragen an die DB und/oder sendet updates (als Oberbegriff für insert/update/delete) an die Datenbank 3. Falls Zugriff auf die DB nicht mehr benötigt, schließt der Client den Kanal (close connection) Nutzung der DB aus Programmen: Embedded SQL in universellen Programmiersprachen (Host Sprachen) t S h wie COBOL, C, Java, Das eingebettete SQL wird durch Klammerung EXEC SQL BEGIN EXEC SQL END oder ähnlich in den Programmen kenntlich gemacht (unterschiedlich für die verschiedenen Host Sprachen) Kommunikation i.d.r. über gemeinsame Variablen (shared variables), üblicherweise mit einem Doppelpunkt (:) als Präfix in SQL kenntlich gemacht 2

DBS: Embedded SQL: Connections Kanal (Connection) mehrfach möglich aber nur eine zu einem Zeitpunkt in einem Programm aktiv Befehle: Öffnen eines Kanals: CONNECT TO server-name AS connection-name AUTHORIZATION user-account-info; Änderen des aktiven Kanals: SET CONNECTION connection-name; Schließen des Kanals: DISCONNECT connection-name; 3

DBS: Embedded SQL in C Variablen innerhalb eines DECLARE Statements werden gemeinsam genutzt und können (mit Doppelpunkt als Präfix) in SQL Befehlen auftreten SQLCODE liefert Fehler bzw. Ausnahmen bei der SQL Abarbeitung Beispiel: int loop; EXEC SQL BEGIN DECLARE SECTION; varchar N_Name[16], N V_Name[16], Adresse[100]; char P_ID[10], Geb_Dat[11], ; int Abt_Nr, Gehalt, SQLCODE, ; EXEC SQL END DECLARE SECTION; loop = 1; while (loop) { prompt ( Eingabe Personen-Identifikator:, P_ID); EXEC SQL select V_Name, N_Name, Name Adr, Gehalt into :V_Name, :N_Name, :Adresse, :Gehalt from Personal where P-ID = :P_ID; if (SQLCODE == 0) printf(v_name, ); else printf( Personen-Identifikator existiert nicht:, P_ID); prompt( Weitere Personen? (1=ja, 0=nein):, loop); END-EXEC } 4

DBS: Embedded SQL in prozeduralen Sprachen Cursor Konzept: Für mengenwertige Antworten wird ein Cursor definiert, der als Iterator für die Menge funktioniert Minimale Funktionalität DECLARE: Deklaration über SFW Klausel OPEN: Führt das SQL Statement aus und setzt Iterator auf das erste Element FETCH: Holt das aktuelle Element und setzt den Iterator weiter CLOSE: Schließt den Cursor Ergänzungen z.b. RESET Beispiel: PL/1 für DB2... 11 EXEC SQL DECLARE BUECHER CURSOR FOR 12 SELECT AUTOR, TITLE, PREIS 13 FROM BUCH 14 WHERE PREIS >:MIN; 17 EXEC SQL OPEN BUECHER, 18 WEITERE_BUECHER := '1'B, 19 DO WHILE (WEITERE_BUECHER); 20 EXEC SQL FETCH BUECHER INTO :AUTOR, :TITEL, :PREIS; 21 IF SQLCODE = 100 22 THEN WEITERE_BUECHER := '0'B; 23 ELSE PUT SKIP LIST (AUTOR, TITEL, PREIS); 24 END; 25 EXEC SQL CLOSE BUECHER; 5

DBS: Embedded SQL in Java SQLJ: Ein Standard für SQL in Java Ein SQLJ Übersetzer transformiert SQL Befehle in Java Code Die übersetzten Befehle werden durch die JDBC Schnittstelle ausgeführt JDBC ist eine Bibliothek für Java um auf Datenbanken zuzugreifen Dazu müssen entsprechene Klassen importiert werden: z.b. java.sql Ein Java Programm mit JDBC kann jede beliebige Datenbank nutzen, dieüber eine JDBC Treiber verfügt Über JDBC kann ein Programm gleichzeitig mehrere Datenbanken nutzen 6

DBS: Embedded SQL in Java Vorgehen Datenbankzugriff über JDBC 1. Importiere die JDBC:Bibliothek (java.sql.*) 2. Lade Ld den JDBC Treiber: Class.forname( oracle.jdbc.driver.oracledriver ) l d l i 3. Vereinbare die notwendigen Variablen 4. Definiere ein Connection Objekt (mit getconnection) 5. Definiere ein Befehls Objekt aus der Befehlsklasse, entweder aus PreparedStatement oder aus Callable Statement 6. Identifiziere die Parameter des Befehls (gekennzeichnet durch? ) 7. Binde Bfhl Befehls Variabelnan l Programm Variablen 8. Führe den SQL Befehl (das Objekt) aus mit JDBC executequery 9. Bearbeite das Ergebnis der Abfrage (wird als 2 dimensionale Tabelle vom Typ ResultSet geliefert) 7

DBS: Embedded SQL in Java Beispiel: pid = readentry( Gebe Personal-ID ein: "); try { #sql{select V_Name, N_Name, Adr, Gehalt into :vname, :nname, :adresse, :gehalt from PERSONAL where P_ ID = :pid}; } catch (SQLException se) { System.out.println( Personen-Id existiert nicht:",+pid); return; } System.out.println(vname + " " + nname + ); SQLJ unterstützt 2 unterschiedliche Iteratoren: Benannte Iteratoren: diese sind mit dem Ergebnis einer Anfrage verknüpft Positionsiteratoren: listen die Attributtypen eines Anfrageergebnisses auf Eine FETCH Operation liefert das nächste Tupel eines Anfrageergebnisses: fetch iterator variable into programm variable 8

DBS: Dynamisches SQL Ziel: Zusammenstellung und Ausführung von (nicht vorübersetzten) SQL Befehlen zur Laufzeit Die Befehle werden interaktiv zur Laufzeit eingegeben oder Eine grafische Benutzungsoberfläche erlaubt den Zusammenbau von SQL Befehlen Dynamische Updates sind einfach Dynamische Abfragen können sehr komplex werden, da Anzahl und jeweiliger Typ der abgefragten Attribute zum Übersetzungszeitpunkt unbekannt sind Beispiel: EXEC SQL BEGIN DECLARE SECTION; varchar sqlupdatestring[256]; EXEC SQL END DECLARE SECTION; prompt ( Gebe SQL-Befehl ein:, sqlupdatestring); EXEC SQL PREPARE sqlcommand FROM :sqlupdatestring; EXEC SQL EXECUTE sqlcommand; 9

DBS: Zugriff über API Dynamische DB Programmierung mit einer Funktionsbibliothek (API) Vorteil: Ki Keine Vorübersetzung notwendig und damitflexibler Nachteil: Syntx Check muss zu Laufzeit erfolgen Istim SQL Standard Standard vorgesehen Einfacher Zugriff auf mehere Datenbanken aus einem Programm Bestimmte Bibliotheken (z.b. sqlcli.h für C) müssen installiert sein SQL Befehle werden dynamisch erzeugt und als Zeichenketten übergeben Komponenten von SQL/CLI: Environment record: Verwaltet die DB Connections (Connection Pool) Connection record: Für jede Connection die notwendigen Informationen Statement record: Für jeden SQL Befehl die notwendigen Informationen Description record: Für jeden Befehl die menge der Tupel 10

Vorgehen DBS: Zugriff über API (C) 1. Lade SQL/CLI Bibliotheken 2. Vereinbare Variablen um Records für die oben genannten Komponenten zu verwalten (Benennung: SQLHSTMT, SQLHDBC, SQLHENV, SQLHDEC) 3. Initialisiere einenumgebungs Record mit SQLAllocHandle 4. Initialisiere einen Connection Record mit SQLAllocHandle 5. Initialisiere einenbefehls Record mit SQLAllocHandle 6. Bereite den SQL Befehl mit der Funktion SQLPrepare vor 7. Binde die Parameter mit Programmvariablen 8. Führe den SQL Befehl mit SQLExecute aus 9. Verknüpfe Attribute der Abfrage mit Variablen in C mittels SQLBindCol 10. Nutze SQLFetch um die Attributwerte t t des jeweilsnächsten Tupels in die C Variablen zu laden 11

DBS: Funktionalität IN Datenbanken Stored Procedures Persistente Prozeduren und Funktionen (Module) existieren in der DB und werden vom DBMS (vom Server, nicht vom Client) ausgeführt Vorteile: Vermeidet Redundanz, wenn viele Anwendungen diese Funktionalität benötigen Reduziert Kommunikationsaufwand, da nur im Server ausgeführt Damit können auch komplexere Views definiert werden Nachteil Stored Procedures zwar inzwischen genormt, dennoch existieren große Unterschiede zwischen den Produkten: Portabilität Genereller Aufbau einer Stored Procedure CREATE PROCEDURE procedure name (params) local declarationsl l procedure body; Genereller Aufbau einer Stored Function CREATE FUNCTION fun name name (params) RETRUNS return type type local declarations function body; Aufruf einer Prozedur oder Funktion: CALL procedure name/function name (Argumente); 12

DBS: Funktionalität IN Datenbanken SQL/PSM: Teil des SQL(>:1999) Standards für persistente Module (persistent stored modules) SQL + Stored Procedures/Functions + zusätzliche prozedurale Kontrollstrukturen Erweitert die Mächtigkeit von SQL zu einer vollständigen Programmiersprache Beispiel SQL/PSM: CREATE FUNCTION Abteilungsgroesse(IN AbtNr INTEGER) RETURNS VARCHAR[7] DECLARE Anz_Mitarb INTEGER; SELECT COUNT (*) INTO Anz_Mitarb FROM SELECT Personal WHERE Abt_Nr = AbtNr; IF Anz_Mitarb > 100 THEN RETURN sehr gross ELSEIF T Anz_Mitarb > 50 THEN RETURN gross ELSEIF TOT_EMPS > 30 THEN RETURN mittel ELSE RETURN klein ENDIF; 13

DBS: Aufbau/Funktionen von DBMS Anwendungsprogramme (Logische) Datenstrukturen (Logische) Zugriffspfadstrukturen Seitenzuordnung Speicherzuordnung Externer Speicher Mengenorientierte Schnittstelle Satzorientierte Schnittstelle Interne Satzschnittstelle Speicherungsstrukturen Systempufferschnittstelle Dateischnittstelle Geräte schnittstelle Relationen, Sichten, Tupel Externe Sätze, Indexstrukturen Interne Sätze, Bäume, Hash Segmente, Seiten Dateien, Blöcke Spuren, Zylinder, Kanäle 14