Dynamic SQL Preparing a query: EXEC SQL PREPARE FROM ; Executing a query: EXEC SQL EXECUTE ; “Prepare” = optimize query. Prepare once, execute many times.

Slides:



Advertisements
Ähnliche Präsentationen
Be.as WEB Technologie
Advertisements

Object Relational Mapping
Objektrelationales Mapping mit JPA
Apache - PHP - MySQL Apache-PHP-MySQL.
1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
2. DB-API: Programmierschnittstellen zu Datenbanken
DI Christian Donner cd (at) donners.com
Basis-Architekturen für Web-Anwendungen
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Datenbankzugriff im WWW (Kommerzielle Systeme)
Allgemeine Technologien II
Objektrelationales Mapping mit JPA
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
Java: Grundlagen der Sprache
Dynamische Webseiten mit PHP
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
JDBC Konzepte Realisierung von Zugriffen
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Introducing the .NET Framework
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
JDBC EDV JDBC.
Einführung MySQL mit PHP
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
J2EE Conformance von JDBC Middleware und EJB Applikation Server Detlef KünzelSystemberater +49 (0)
Einführung und Überblick
JDBC: JAVA Database Connectivity
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
ODBC (Open Database Connectivity)
© ISY Informationssysteme GmbHSeite: 1 ISY-Connect Connect Client (Konfiguration) Das obige Bild zeigt das Fenster von ISY Connect-Client im Konfigurationsmodus.
Wir bauen uns eine Webapplikation!
DireXions – Connectivity Inside & Out File I/O Updates, ODBC 64-bit, & SQL Command Utility Presenter: Devon Austen.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Sesame Florian Mayrhuber
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 SQL (Teil 5)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #9 SQL (Teil 4)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
CGI (Common Gateway Interface)
JDBC (Java DataBase Connectivity)
Esprit Database Suite Eine leistungsfähige Java-Persistzenzschicht zur einfachen Programmierung von Datenbankapplikation.
XML und Datenbanken © 2006 Markus Röder
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
Datenanbindung in Webapplikationen
Datenbankanbindung mit
Embedded SQL in Java Michael Stapf Berater Strategische Projekte
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
->Prinzip ->Systeme ->Peer – to – Peer
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Datenbanken im Web 1.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Datenbank System (DBS) - Warum?
JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche.
JDBC – Datenzugriff aus Java
Web Services Spezielle Methoden der SWT Liste V – WS 2008/2009 Christian Boryczewski.
Datenbanken und Internet
1 Prof. Dr. Andreas SchmietendorfWS06/07 Übung 3 Test der Möglichkeiten des JDBC-Interfaces.
Eine komplexe Netzanwendung Webserver und Datenbankserver im Netzwerk in einer Anwendung einrichten.
Dirk Schuirmann W+M AG Theorie in der Praxis 1. CPGJDBC Schreiben aus dem CICS Lesen aus dem Batch 2. Programmdokumentation 3. Preismodell bei CA.
DB2 UDB im z/VSE Heinz Peter Maassen – Lattwein GmbH COURSE Tagung Bad Hersfeld 2008.
© 2005, Rudolf Jansen JDBC Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG - SIG Development.
Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC
Vorlesung #8 SQL (Teil 5).
 Präsentation transkript:

Dynamic SQL Preparing a query: EXEC SQL PREPARE FROM ; Executing a query: EXEC SQL EXECUTE ; “Prepare” = optimize query. Prepare once, execute many times. Jeffrey D. Ullman - CS145 - Herbst Stanford University, bezogen von

Example: A Generic Interface EXEC SQL BEGIN DECLARE SECTION; char query[MAX_LENGTH]; EXEC SQL END DECLARE SECTION; while(1) { /* issue SQL> prompt */ /* read user’s query into array query */ EXEC SQL PREPARE q FROM :query; EXEC SQL EXECUTE q; } q is an SQL variable representing the optimized form of whatever statement is typed into :query Jeffrey D. Ullman - CS145 - Herbst Stanford University, bezogen von

Execute-Immediate If we are only going to execute the query once, we can combine the PREPARE and EXECUTE steps into one. Use: EXEC SQL EXECUTE IMMEDIATE ; Jeffrey D. Ullman - CS145 - Herbst Stanford University, bezogen von

Example: Generic Interface Again EXEC SQL BEGIN DECLARE SECTION; char query[MAX_LENGTH]; EXEC SQL END DECLARE SECTION; while(1) { /* issue SQL> prompt */ /* read user’s query into array query */ EXEC SQL EXECUTE IMMEDIATE :query; } Jeffrey D. Ullman - CS145 - Herbst Stanford University, bezogen von

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Nachtrag ESQL SELECT * FROM myTable WHERE Ist dies dynamisches oder statisches SQL?

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle SQL-Injection SQL-Injection – Einschleusen von zusätzlichem Code oder SQL-Befehlen –Siehe Wikipedia für weitere Infos, Bsp. und Gegenmaßnahmen: –Generell ist eine Webanwendung für die korrekte Prüfung der Eingabedaten verantwortlich. Geeignete Schutzmaßnahmen sind in erster Linie dort zu implementieren.

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Vorläufiger Schedule Nr.DatumVorlesungÜbung Einführung, Vorstellung der Themenkeine Übung Embedded SQL JDBC, ODBC, SQLJ Persistenz: Hibernate, JDO keine Vorlesung keine Übung Einführung in XML Teil Einführung in XML Teil Umgang mit XML XML und Datenbanken Einführung in Web Services Vorlesungsfrei Weihnachten Vorlesungsfrei Weihnachten keine Vorlesung keine Übung EDI, EDIFACT, Universal Business Language Semanitc Web - Ziele und Geschichte RDF, OWL ReserveAusblicke und Zusammenfassung

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle CLI – Call Level Interface

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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: –PDF des Technical Standards von 1995! ~320 Seiten

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Bei CLI handelt es sich um so genannte Middleware, mit deren Hilfe aus beliebigen Anwendungen auf beliebige relationale Datenbanken zugegriffen werden kann. Ähnlich wie Gerätetreiber zum Ansteuern der Hardware wird die CLI- Implementierung zum Ansteuern von Datenbanken genutzt.

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle

Vorteile CLI zu ESQL Kein Precompiler nötig. Vorteil für Client/Server Architektur, da unabhägig von Zieldatenbank

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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.

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Programmierschnittstellen, die das CLI- Konzept umsetzen (CLI-Implementierungen), sind: –Open Database Connectivity (ODBC), –Java Database Connectivity (JDBC).

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle ODBC Von Microsoft – erste Umsetzung des CLI Anfangs entwickelt für C und C++ Entwickelt für Microsoft OS – aber geht auch unter UNIX, … ODBC Data Source Administrator unter Windows: Start – Systemsteuerung – Verwaltung – Datenquellen (ODBC)

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle ODBC Data Source Administrator In diesem Tool können Data Source Names (DSN) vergeben werden. DSN kann anschließend im Code zum Verbindungsaufbau verwendet werden. … weitere Infos, z.B. unter: … dort Perl mit MS Access Beispieldatenbank Nordwind

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle ODBC für Java? ODBC ist für C entwickelt, entspricht daher nicht den Java (OO) Paradigmen Plattformunabhägigkeit kann mit ODBC nicht gewährleistet werden (nur Windows, eingeschränkt UNIX) –Zugriff bei ODBC erfolgt über OS Konkurenz zwischen Microsoft (ODBC) und SUN (JDBC)

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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, Connection-Pooling, verteilte Transaktionen –JDBC 2.0 Treiber sind für die fast alle (bekannteren) RDBMS vorhanden * Java 2 Standard Edition (JSE2) – auch Java2

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Java Database Connectivity JDBC 3.0 – Teil von Java 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 –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 –Noch sehr neu und kaum zu finden!

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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)

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle JDBC-Treiber-Typen Type 4Type 3Type 1Type 2 Bilder von:

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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:

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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:

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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:

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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 Bilder von:

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle JDBC in Schichten-Architektur DBS Java Anwendung JDBC Zwei-Schichen-Architektur (Two-Tier-Modell) Client Server z.B. Web, LAN, proprietäres Protokoll … DBS DB-Server Application Server JDBC Client Drei-Schichten-Architektur (Three-Tier-Modell) Applet, Java GUI, … z.B. HTTP, RMI Servlet, Java Anwendung, …

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Praxis 1.JDBC Treiber für DBMS in Classpath aufnehmen, Beispiel: set JDBC_Driver="C:\MySQL\mysql-connector-java bin.jar" java –classpath %JDBC_Driver% MyAnwendung 2.Treiber im Program laden und aktivieren, Beispiel: try { Class.forName(jdbcdriver); } catch (Exception e) {} 3.Verbindung herstellen, Beispiel: try { Connection con = DriverManager.getConnection(dburl, username, passwd); } catch (Exception e) {}

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Praxis 4.SQL Statement (Objekt) erzeugen Statement stmt = con.createStatement(); 5.SQL Anfrage erzeugen und an DBS schicken: ResultSet rs = stmt.executeQuery(“select * from myTable”); 6.Mit dem Ergebnis arbeiten: while (rs.next()) { String name = rs.getString(“Name”); System.out.println(“Name = “+name); }

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Prepared Statements … PreparedStatement stmt = null; stmt = con.prepareStatement(“select * from mytable where ID = ?”); stmt.setInt(1,4); ResultSet rs = stmt.executeQuery(); …

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Statisches SQL - SQLJ Benötigt Precompiler des DBMS-Herstellers! Überprüfungen durch Precompiler – Syntax und Semantik (DB-Objekte richtig geschrieben?) Schreibweise kompakter als JDBC Während der Laufzeit wird JDBC verwendet!  Plattformunabhängig

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle 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 …

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Performance Vergleich

WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Performance Vergleich