Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Dynamic SQL Preparing a query: EXEC SQL PREPARE FROM ; Executing a query: EXEC SQL EXECUTE ; “Prepare” = optimize query. Prepare once, execute many times."—  Präsentation transkript:

1 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 2004 - Stanford University, bezogen von www.odbms.orgwww.odbms.org

2 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 2004 - Stanford University, bezogen von www.odbms.orgwww.odbms.org

3 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 2004 - Stanford University, bezogen von www.odbms.orgwww.odbms.org

4 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 2004 - Stanford University, bezogen von www.odbms.orgwww.odbms.org

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

6 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: 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.

7 WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Vorläufiger Schedule Nr.DatumVorlesungÜbung 120.10.2006Einführung, Vorstellung der Themenkeine Übung 227.10.2006Embedded SQL 303.11.2006JDBC, ODBC, SQLJ 410.11.2006Persistenz: Hibernate, JDO 517.11.2006keine Vorlesung keine Übung 624.11.2006Einführung in XML Teil 1 701.12.2006Einführung in XML Teil 2 808.12.2006Umgang mit XML 915.12.2006XML und Datenbanken 1022.12.2006Einführung in Web Services 29.12.2006Vorlesungsfrei Weihnachten 05.01.2007Vorlesungsfrei Weihnachten 1112.01.2007keine Vorlesung keine Übung 1219.01.2007EDI, EDIFACT, Universal Business Language 1326.01.2007Semanitc Web - Ziele und Geschichte 1402.02.2007RDF, OWL 1509.02.2007ReserveAusblicke und Zusammenfassung

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

9 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: http://www.opengroup.org/products/publications/catalog/c451.htm http://www.opengroup.org/products/publications/catalog/c451.htm –PDF des Technical Standards von 1995! ~320 Seiten

10 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

11 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.

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

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

14 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.

15 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).

16 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)

17 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: http://aktuell.de.selfhtml.org/artikel/cgiperl/odbc/ … dort Perl mit MS Access Beispieldatenbank Nordwind http://aktuell.de.selfhtml.org/artikel/cgiperl/odbc/

18 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)

19 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

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

21 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)

22 WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle JDBC-Treiber-Typen Type 4Type 3Type 1Type 2 Bilder von: http://java.sun.com/products/jdbc/overview.html

23 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: http://java.sun.com/products/jdbc/overview.html

24 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: http://java.sun.com/products/jdbc/overview.html

25 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: http://java.sun.com/products/jdbc/overview.html

26 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: http://java.sun.com/products/jdbc/overview.html

27 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, …

28 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-3.1.6-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) {}

29 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); }

30 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(); …

31 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

32 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 …

33 WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Performance Vergleich http://www-128.ibm.com/developerworks/db2/library/techarticle/0204pooloth/0204pooloth.html

34 WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Performance Vergleich http://www-128.ibm.com/developerworks/db2/library/techarticle/0204pooloth/0204pooloth.html


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

Ähnliche Präsentationen


Google-Anzeigen