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



Ähnliche Dokumente
Wie kommen die Befehle zum DBMS

Wie kommen die Befehle zum DBMS

Programmieren und DBMS. Dr. Karsten Tolle

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

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

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

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

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

Datenbank und Informationssysteme

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

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

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

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

3. Stored Procedures und PL/SQL

Oracle: Abstrakte Datentypen:

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Gesicherte Prozeduren

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

Prozedurale Datenbank- Anwendungsprogrammierung

Kapitel DB:VI (Fortsetzung)

2. Datenbank-Programmierung

Innovator 11 excellence. Import eines DB-Schemas mit Direktzugriff auf ein RDBMS via JDBC. HowTo. Udo Ende.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Datenbanken & Informationssysteme Übungen Teil 1

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

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

Einführung in die Programmierung

ODBC-Treiber Programmübersicht

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Einführung in Javadoc

Scala kann auch faul sein

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Zählen von Objekten einer bestimmten Klasse

Nutzung von GiS BasePac 8 im Netzwerk

Allgemeines zu Datenbanken

Terminabgleich mit Mobiltelefonen

Objektorientierte Programmierung

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

DB2 Kurzeinführung (Windows)

IBM SPSS Statistics Version 23. Einführung in Installation und Lizenzierung

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

OP-LOG

Hinweise zur Installation von MySQL

Titel. System Center Service Manager 2012 R2 Anleitung zur Installation

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

10.6 Programmier-Exits für Workitems

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

Die Installation eines MS SQL Server 2000 mit SP3a wird in diesem Artikel nicht beschrieben und vorausgesetzt.

4D Server v12 64-bit Version BETA VERSION

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Qualität und Verlässlichkeit Das verstehen die Deutschen unter Geschäftsmoral!

Installationsanleitung DIALOGMANAGER

JDBC. Allgemeines ODBC. java.sql. Beispiele

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Erfahrungen mit Hartz IV- Empfängern

6.9 Java Server Pages

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Computeranwendung und Programmierung (CuP)

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Arbeiten mit UMLed und Delphi

Architektur des agimatec-validation Frameworks

Installation OMNIKEY 3121 USB

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

Grundlagen verteilter Systeme

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Lehrer: Einschreibemethoden

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Installationsanweisung editit

Informatik Grundlagen, WS04, Seminar 13

MIN oder MAX Bildung per B*Tree Index Hint

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

25 Import der Beispiele

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

Anleitung über den Umgang mit Schildern

Seminar Informationsintegration und Informationsqualität. Dragan Sunjka. 30. Juni 2006

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Unsere Webapplikation erweitern

Was bedeutet Inklusion für Geschwisterkinder? Ein Meinungsbild. Irene von Drigalski Geschäftsführerin Novartis Stiftung FamilienBande.

MySQL Installation. AnPr

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Rundung und Casting von Zahlen

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

Datenmanagement in Android-Apps. 16. Mai 2013

Wir machen neue Politik für Baden-Württemberg

BANKETTprofi Telefonschnittstelle

Transkript:

embedded SQL Embedded SQL (abgekürzt: ESQL) ist eine Spracherweiterung von SQL, mit der es möglich ist, SQL-Anweisungen innerhalb einer strukturierten oder objektorientierten Programmiersprache (der Hostsprache) auszuführen. Embedded SQL wurde erstmals im SQL92- Standard definiert.

Quelltext mit SQL-Befehlen SQL LIB STD LIB Quelltext in reiner host language Objektdatei Ausführbares Programm Precompiler Compiler Linker

embedded SQL Unabhängig von der Hostsprache kann zwischen statischem und dynamischem SQL unterschieden werden. statisches SQL: SQL-Anweisung wird zum Zeitpunkt der Programmierung festgelegt dynamisches SQL: SQL-Anweisung wird erst zum Zeitpunkt der Programmausführung erstellt

Beispiele! Syntax C Variablen beginnen mit : EXEC SQL EXECUTE IMMEDIATE SELECT * FROM :tablename; dynamisch statisch EXEC SQL SELECT * FROM mytable WHERE ID = :value; EXEC SQL EXECUTE IMMEDIATE SELECT :colname FROM mytable; dynamisch

CLI Call Level Interface

Definition Das Call Level Interface (kurz CLI) ist eine Datenbankschnittstellen-Spezifikation für den Zugriff auf RDBMS (baut auf SQL auf) aus anderen Anwendungen heraus. Weitere Details unter: http://www.opengroup.org/products/publications/catalog/c451.htm PDF des Technical Standards von 1995! ~320 Seiten

Nebel im Akronym Dschungel 2) CLI - Calling Line Identification 3) CLI - Clear Interrupt Flag 4) CLI - Client Library Interface 5) CLI - Command Line Interface 6) CLI - Command Line Interpreter 7) CLI - Common Language Interface

Anwendung 1 Elementare Zugriffsoperationen Anwendung 2 Elementare Zugriffsoperationen Anwendung 3 Elementare Zugriffsoperationen Anwendung 1 Zugriffsoperation en in Progr.- Sprache enthalten Anwendung 2 Zugriffsoperation en in Progr.- Sprache enthalten Call Level Interface Anwendung 3 Zugriffsoperation en in Progr.- Sprache enthalten Datenbank- Managementsystem (DBMS) DBS Datenbank- Managementsystem (DBMS) DBS Datenbank (DB) Datenbank (DB)

Vorteile CLI zu ESQL Kein Präcompiler nötig. Vorteil für Client/Server Architektur, da unabhägig(er) von Zieldatenbank Anwendung 1 Anwendung 2 Anwendung 3 Call Level Interface Oracle IBM DB2 Datenbank (DB) Datenbank (DB)

Zum Selberlesen Die CLI-Implementierung bildet die Befehlssätze verschiedener DBMS auf eine immer gleiche Funktionsbibliotek ab. für das Programm an sich ist es unwichtig, mit welcher Datenbank es arbeitet. Das CLI hat also die Funktion eines Übersetzers, der Programmaufrufe in eine Sprache übersetzt, die die Datenbank versteht und umgekehrt Daten, die von der Datenbank zurückgeliefert werden, so formatiert, dass sie vom Programm verarbeitet werden können.

Programmierschnittstellen, die das CLI- Konzept umsetzen (CLI-Implementierungen), sind z.b.: Open Database Connectivity (ODBC), Java Database Connectivity (JDBC).

ODBC ODBC wurde für C bzw. Cobol entwickelt nicht objekt-orientiert. Im Betriebssystem müssen DSN (data source name) für die Datenquellen angelet werden, über die zugegriffen werden kann. Zugriff bei ODBC erfolgt über OS ODBC nicht so gut für Java! + Konkurenz zwischen Microsoft (ODBC) und SUN (JDBC)

#!/usr/bin/perl Beispiel in Perl # Define the DSN $DSN="DWCTRLDB"; # This loads ODBC use Win32::ODBC; Data source name! ODBC Treiber von Windows # Connect to datasource # To secure we are connected if (!($db=new Win32::ODBC($DSN))) { print "Error connecting to $DSN\n"; print "Error: ". Win32::ODBC::Error(). "\n"; } else { print "Database opened...\n"; } Verbindung zur Datenbank herstellen # create an SQL Statement $SqlStatement = "create table TIDS (id INT, data VARCHAR(100))"; $SqlDropTable = "drop table TIDS"; if ($db->sql($sqldroptable)) { print "SQL failed.\n"; print "Error: ". $db->error(). "\n"; } else { print "Table droped\n" }

Java Database Connectivity JDBC 1.0 (Januar 1997) jdbc.sql.* als optionales Paket Basierend auf SQL92 JDBC 2.0 java.sql.* in JSE2 * (batch-updates, SQL3-Datentypen) javax.sql.* (optional ab Java 1.3 fest) enthält Data- Source (JNDI - Java Naming and Directory Interface), Connection-Pooling, verteilte Transaktionen JDBC 2.0 Treiber sind für die fast alle (bekannteren) RDBMS vorhanden * Java 2 Standard Edition (JSE2) auch Java2

Java Database Connectivity JDBC 3.0 Teil von Java 1.4 - neu unter anderem: Savepoints in Transaktionen, Wiederverwendung von PreparedStatements, JDBC-Datentypen BOOLEAN und DATALINK, Abrufen automatisch generierter Keys, Änderungen von LOBs (Large Objects) und mehrere gleichzeitig geöffnete ResultSets JDBC 4.0 (Dezember 2006) Teil von Java 1.6 neu hier: Annotationen für SQL-Queries, Treiber werden wenn vorbereitet automatisch angemeldet, XMLDatentypen aus SQL:2003, Zugriff auf die SQL ROWID APIS unter: http:// java.sun.com/products/jdbc/download.html

Java Database Connectivity JDBC eigens für Java entwickelt Folgt den Java Paradigmen Write once run anywhere Über JDBC-ODBC Bridge können auch ODBC Datenbanken (falls JDBC nicht vom DBMS unterstützt wird)

Bilder von: http://java.sun.com/products/jdbc/overview.html JDBC-Treiber-Typen Type 4 Type 3 Type 1 Type 2

Bilder von: http://java.sun.com/products/jdbc/overview.html JDBC-Treiber-Typen Ein JDBC-Typ-1-Treiber kommuniziert ausschließlich über einen JDBC-ODBC-Bridge-Treiber. Damit ist ein Typ-1-Treiber abhängig von einem installierten ODBC-Treiber. Der JDBC-ODBC- Bridge-Treiber wandelt JBDC- in ODBC-Anfragen um. Ein Typ-1-Treiber wird dann verwendet, wenn es zu der Datenbank keine eigenständigen JDBC-Treiber gibt. Type 1

Bilder von: http://java.sun.com/products/jdbc/overview.html JDBC-Treiber-Typen Ein Typ-2-Treiber kommuniziert über eine plattformspezifische Programmbibliothek mit dem Datenbankserver. Das bedeutet, dass für jede Betriebssystem- Plattform zu dem Typ-2-Treiber eine zusätzliche Programmbibliothek benötigt wird. Type 2

Bilder von: http://java.sun.com/products/jdbc/overview.html JDBC-Treiber-Typen Mittels des Typ-3-Treibers werden die JDBC-API-Befehle in DBMS-Befehle des Datenbankservers übersetzt und (über ein Netzwerkprotokoll) an einen Middleware-Treiber an den Datenbankserver übertragen. Ein Typ-3- Treiber benötigt damit keine plattformspezifischen Bibliotheken und muss auch nichts über den verwendeten Datenbankserver wissen. Typ-3-Treiber eignen sich sehr gut für Internet-Protokolle im Zusammenhang mit Firewalls. Type 3

Bilder von: http://java.sun.com/products/jdbc/overview.html JDBC-Treiber-Typen Diese Variante kommuniziert wie der Typ-3-Treiber. Allerdings wird die Kommunikation direkt mit dem Datenbankserver aufgenommen. Ein Middleware-Treiber wird dabei nicht verwendet. Damit kann ein Typ-4-Treiber schneller als ein Typ-3-Treiber sein, ist aber weniger flexibel. Typ-4-Treiber eignen sich gut für Intranet-Lösungen, die schnelle Netzprotokolle nutzen wollen. Type 4

Praxis JDBC Treiber für DBMS in Classpath aufnehmen, Beispiel: set JDBC_Driver="C:\MySQL\mysql-connector-java-3.1.6-bin.jar" java classpath %JDBC_Driver% MyAnwendung Treiber im Program laden und aktivieren, Beispiel: try { Class.forName(jdbcdriver); } catch (Exception e) {} Verbindung herstellen, Beispiel: try { Connection con = DriverManager.getConnection(dburl, username, passwd); } catch (Exception e) {}

Praxis SQL Statement (Objekt) erzeugen Statement stmt = con.createstatement(); SQL Anfrage erzeugen und an DBS schicken: ResultSet rs = stmt.executequery( select * from mytable ); Mit dem Ergebnis arbeiten: while (rs.next()) { String name = rs.getstring( Name ); System.out.println( Name = +name); }

Prepared Statements PreparedStatement stmt = null; stmt = con.preparestatement( select * from mytable where ID =? ); stmt.setint(1,4); ResultSet rs = stmt.executequery(); 1 erstes Fragezeichen wir mit Wert 4 gesetzt!

SQLJ Benötigt Präcompiler des DBMS-Herstellers! Überprüfungen durch Präcompiler Syntax und Semantik (DB-Objekte richtig geschrieben?) Schreibweise kompakter als JDBC Während der Laufzeit wird JDBC verwendet! Plattformunabhängig

Quelltext mit SQL-Befehlen Präcompiler SQL LIB STD LIB Quelltext in reiner host language Compiler DB Katalog Objektdatei Linker Ausführbares Programm

SQLJ - Beispiel #sql cur0 = {SELECT * FROM org}; while (true) { // retrieve and display the result from the SELECT statement #sql {FETCH :cur0 INTO :deptnumb, :deptname, :manager, :division, :location}; if (cur0.endfetch()) { break; } System.out.println(" " + Data.format(deptnumb, 8) + " " + Data.format(deptname, 14) + " " + Data.format(manager, 7) + " " + Data.format(division, 10) + " " + Data.format(location, 14)); } cur0.close(); // close the cursor

Performance Vergleich http://www-128.ibm.com/developerworks/db2/library/techarticle/0204pooloth/0204pooloth.html

Performance Vergleich http://www-128.ibm.com/developerworks/db2/library/techarticle/0204pooloth/0204pooloth.html

Vorteile - Nachteile ESQL statisch ESQL dynamisch SQLJ CLI (ODBC und JDBC) Was gibt es noch?

Stored Procedures SQL Statements werden auf der Serverseite gehalten Verbunden mit PL Schleifen etc. vorhanden Wann insb. ist dies von Vorteil?

SQL-Injection SQL-Injection Einschleusen von zusätzlichem Code oder SQL-Befehlen Siehe Wikipedia für weitere Infos, Bsp. und Gegenmaßnahmen: http://de.wikipedia.org/wiki/sql_injection Generell ist eine Webanwendung für die korrekte Prüfung der Eingabedaten verantwortlich. Geeignete Schutzmaßnahmen sind in erster Linie dort zu implementieren.