Entwicklung von XML-Anwendungen mit ORACLE XSU Oberseminar Datenbanken Andreas Rebs, 01INM.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
JPQL Java Persistence Query Language
Internet-Datenbanken
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
Java: Objektorientierte Programmierung
Indirekte Adressierung
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
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
XINDICE The Apache XML Project Name: Jacqueline Langhorst
IS: Datenbanken, © Till Hänisch 2000 Tabellen In relationalen DB werden Daten in Tabellen organisiert Jede Spalte enthält eine bestimmte Art von Information,
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Dynamische Webseiten mit PHP
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
XML-Unterstützung in Oracle. © Prof. T. Kudraß, HTWK Leipzig 2 2 Überblick XML Architekturformen und Speicherungsarten XML Schema und Mapping Laden von.
Speicherung von XML- Dokumenten als Large Objects.
Publikation von XML-Daten mit XSQL Pages. © Prof. T. Kudraß, HTWK Leipzig Vorteile von XSQL Pages einfache Generierung von XML-Dokumenten auf der Basis.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Text-Retrieval mit Oracle Vortrag von Andreas Mück & David Diestel.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Datenintegrität Referentielle Integrität create table
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Einführung MySQL mit PHP
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
JDBC: JAVA Database Connectivity
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Wir bauen uns eine Webapplikation!
1 Softwareentwicklung mit.NET Teil 5 Datenzugriff mit ADO.NET Dr. Ralph Zeller.
JDBC (Java DataBase Connectivity)
Copyright Oracle Corporation, All rights reserved. 6 Unteranfragen (Subqueries)
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Datenbankanbindung mit
Embedded SQL in Java Michael Stapf Berater Strategische Projekte
Programmiervorkurs WS 2014/15 Methoden
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Structured Query Language
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
2 Auswählen und Sortieren von Daten. 2-2 Filtern von Zeilen mit Selektion "…suche alle Angestellten in Abteilung 10" EMP EMPNO ENAME JOB... DEPTNO 7839KINGPRESIDENT.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Einführung Schedule: Timing Topic 60 minutes Lecture 60 minutes Total.
Integritätsbedingungen (Constraints)
10 Sichten (Views) Ziele Verständnis einer View Erzeugen einer View Lesen von Daten durch eine Sicht Ändern der Definition von Views Einfügen, Ändern.
7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen.
11 Verwaltung von Abhängigkeiten. Ziele Am Ende dieser Lektion verfügen Sie über die folgenden Kenntnisse: Überwachen prozeduraler Abhängigkeiten Effekte.
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Einfache SQL-Befehle Schedule: Timing Topic 40 minutes Lecture
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
Datenbanken abfragen mit SQL
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
1 © Thales IS GmbH 2002 Thales Information Systems GmbH Im Team für Ihren Erfolg DOAG - Regionaltreffen Hannover Donnerstag, Oracle 9i XML Datenbank.
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
Oracle und XML: Ein Überblick
Abfragesprache SQL in ORACLE
 Präsentation transkript:

Entwicklung von XML-Anwendungen mit ORACLE XSU Oberseminar Datenbanken Andreas Rebs, 01INM

Erste Fragen Was bedeutet eigentlich XSU ? Nach welchem Prinzip arbeitet XSU ? Wie kann man die Funktionalitäten von XSU überhaupt nutzen ?

Oberseminar Datenbanken Andreas Rebs, 01INM Was bedeutet eigentlich XSU ? Oracle XML-SQL Utility Bindeglied zwischen relationalen Daten- banken und XML Generierung von XML aus Daten einer relationalen Datenbank Einfügen von XML in relationale Daten- banken ab Oracle8i (Version 8.1.7) im Installati- onspaket integriert

Oberseminar Datenbanken Andreas Rebs, 01INM Nach welchem Prinzip arbeitet XSU ? Generierung von XML-Dokumenten in ihrer String-Darstellung bzw als DOM- Modell aus SQL-Abfragen heraus Extrahieren von Daten aus XML-Doku- menten und Verwendung dieser für Ein- fügeoperationen auf Tabellen Extrahieren von Daten aus XML-Doku- menten zum Zwecke von Aktualisierungs- und Löschoperationen auf Datensätze einer Tabelle

Oberseminar Datenbanken Andreas Rebs, 01INM Generierung von XML (SELECT) CREATE TABLE emp ( EMPNO NUMBER, ENAME VARCHAR2(20), JOB VARCHAR2(20), MGR NUMBER, HIREDATE DATE, SAL NUMBER, DEPTNO NUMBER ); Ausführen einer SQL-Abfrage Bsp.: SELECT * FROM emp WHERE EMPNO=7369;

Oberseminar Datenbanken Andreas Rebs, 01INM Generierung von XML (SELECT) Analyse der Metadaten der Ergebnismenge Konvertierung in folgende Form: 7369 Smith CLERK /17/1980 0:0:

Oberseminar Datenbanken Andreas Rebs, 01INM Einfügen aus XML (INSERT) Analyse der Metadaten der Zieltabelle Generierung eines Statements der Form: INSERT INTO emp (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,DEPTNO) VALUES (?,?,?,?,?,?,?); Extrahieren der zu den Metadaten passen- den Elemente aus dem XML-Dokument Ausführen des generierten SQL-State- ments unter Verwendung der extrahierten Daten

Oberseminar Datenbanken Andreas Rebs, 01INM Aktualisieren mit XML (UPDATE) Festlegung von Schlüsselattributen, die zur Identifizierung der zu aktualisierenden Datensätze dienen Festlegung der zu aktualisierenden Attri- bute; sonst erfolgt Akualisierung aller Attri- bute Analyse der Metadaten der Zieltabelle Generierung eines Update-Statements Extrahieren der Daten aus XML-Dokument

Oberseminar Datenbanken Andreas Rebs, 01INM Aktualisieren mit XML (UPDATE) Bsp.:EMPNO Schlüsselspalte SAL zu aktualisierende Spalte 7369 CLERK UPDATE emp SET SAL=800 WHERE EMPNO=7369;

Oberseminar Datenbanken Andreas Rebs, 01INM Löschen mit XML (DELETE) Festlegung von Schlüsselattributen, die zur Identifizierung der zu löschenden Datensätze dienen Analyse der Metadaten der Zieltabelle Generierung eines DELETE-Statements Extrahieren der Daten aus XML-Dokument Ausführung des generierten SQL-State- ments unter Verwendung der extrahierten Daten

Oberseminar Datenbanken Andreas Rebs, 01INM Wie kann man XSU benutzen ? drei verschiedene Möglichkeiten –XSU Command Line Front End –XSU Java API –XSU PL/SQL API Ausführung direkt in der Datenbank, in einer Client-Umgebung oder auf Web- Server möglich

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Command Line Front End XSU Funktionalitäten zum Generieren von XML aus relationalen Datenbanken und zum Einfügen von XML in relationale Datenbanken vorhanden Verwendung dieser Funktionen durch Aufruf der Java-Klasse OracleXML Aufruf über Kommandozeile in der Form: java OracleXML Parameter

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Command Line Front End (SELECT) Verwendung des Parameters getXML für die Java-Klasse OracleXML, gefolgt von weiteren optionalen Parametern und dem SQL-Statement Beispiel: java OracleXML getXML –user "scott/tiger" "SELECT * FROM emp" Optionen: –user " / " –withDTD

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Command Line Front End (SELECT) –rowsetTag " " –rowTag " " –rowIdAttr " " –rowIdColumn " " –useNullAttrId –maxRows " " –skipRows " " –fileName " "

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Command Line Front End (INSERT) Verwendung des Parameters putXML für die Java-Klasse OracleXML, gefolgt von weiteren optionalen Parametern und den Namen vom XML-Dokument und der Ziel- tabelle Beispiel: java OracleXML putXML –user "scott/tiger" –fileName "data.xml" "emp" Optionen: –user " / " –rowTag " "

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Command Line Front End (INSERT) –ignoreCase –commitBatch " "

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API XSU-Funktionalitäten werden über die Java-Klassen OracleXMLQuery und OracleXMLSave zum Einbinden in Java- Applikationen angeboten Registrierung der JDBC-Klasse und Ver- bindung mit Datenbank herstellen import oracle.jdbc.driver.*; DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn =

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (SELECT) zur Generierung von XML wird die Java- Klasse OracleXMLQuery verwendet Erzeugung einer Instanz von OracleXMLQuery mit Übergabe des SQL- Statements und der Verbindung als Para- meter Beispiel: OracleXMLQuery qry = new OracleXMLQuery(conn, "SELECT * FROM emp");

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (SELECT) import java.sql.*; import oracle.xml.sql.query.*; import oracle.jdbc.*; public class sampGetXML { public static void main(String args[]) throws SQLException { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = OracleXMLQuery qry = new OracleXMLQuery(conn,"select * from emp"); String xmlString = qry.getXMLString(); System.out.println(" OUTPUT IS:\n"+xmlString); qry.close(); conn.close(); }

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (SELECT) statt der String-Darstellung kann auch die DOM-Darstellung generiert werden Generierung erfolgt über die Funktion "getXMLDOM()" Beispiel: XMLDocument domDoc = (XMLDocument)qry.getXMLDOM(); Paginating Reults –"setSkipRows()" –"setMaxRows()"

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API folgende Schreiboperationen auf die Datenbank stehen zur Verfügung: –INSERT –UPDATE –DELETE die Java-Klasse OracleXMLQuery stellt die notwendigen Funktionen bereit Erzeugung einer Instanz von OracleXMLSave mit Übergabe des XML- Dateinamens als Parameter

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (INSERT) zum Einfügen von Inhalten aus XML- Dokumenten steht die Funktion "insertXML()" zur Verfügung als Parameter wird der Dateiname des XML-Dokuments übergeben; wenn nötig, mit Pfadangabe Rückgabewert dieser Funktion ist die An- zahl eingefügter Datensätze

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (INSERT) public class sampInsert{ public static void main(String args[]) throws SQLException{ String tabName = "emp"; String fileName = "sampdocins.xml"; DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = OracleXMLSave sav = new OracleXMLSave(conn, tabName); String [] colNames = new String[5]; colNames[0] = "EMPNO"; sav.setUpdateColumnList(colNames); URL url = sav.getURL(fileName); int rowCount = sav.insertXML(url); System.out.println(" successfully inserted "+rowCount+" rows into "+tabName); conn.close(); }

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (UPDATE) zum Aktualisieren von Datensätzen anhand der Daten aus XML-Dokumenten steht die Funktion "updateXML()" zur Verfügung als Parameter wird der Dateiname des XML-Dokuments übergeben; wenn nötig, mit Pfadangabe Rückgabewert dieser Funktion ist die An- zahl aktualisierter Datensätze

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (UPDATE) public class sampUpdate{ public static void main(String args[]) throws SQLException{ String tabName = "emp"; String fileName = "sampdocupd.xml"; DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = String [] keyColNames = new String[1]; keyColNames[0] = "EMPNO"; String [] updateColNames = new String[2]; updateColNames[0] = "SAL"; OracleXMLSave sav = new OracleXMLSave(conn, tabName); sav.setKeyColumnList(keyColNames); sav.setUpdateColumnList(updateColNames); URL url = sav.getURL(fileName); int rowCount = sav.updateXML(url); System.out.println(" successfully updated "+rowCount+" rows from "+ tabName); conn.close(); }

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (DELETE) zum Löschen von Datensätzen anhand der Daten aus XML-Dokumenten steht die Funktion "deleteXML()" zur Verfügung als Parameter wird der Dateiname des XML-Dokuments übergeben; wenn nötig, mit Pfadangabe Rückgabewert dieser Funktion ist die An- zahl gelöschter Datensätze

Oberseminar Datenbanken Andreas Rebs, 01INM XSU Java API (DELETE) public class sampDelete{ public static void main(String args[]) throws SQLException{ String tabName = "emp"; String fileName = "sampdocdel.xml"; DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = OracleXMLSave sav = new OracleXMLSave(conn, tabName); String [] keyColNames = new String[1]; keyColNames[0] = "DEPTNO"; sav.setKeyColumnList(keyColNames); URL url = sav.getURL(fileName); int rowCount = sav.deleteXML(url); System.out.println(" successfully deleted "+rowCount+" rows from "+ tabName); conn.close(); }

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API XSU-Funktionalitäten werden über die Packages DBMS_XMLQuery und DBMS_XMLSave in einer PL/SQL-Um- gebung zur Verfügung gestellt diese Packages spiegeln alle Operationen der XSU Java API wider

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API (SELECT) Erzeugung eines Context Handles mittels der Funktion "newContext()"; SQL-Abfrage wird als Parameter übergeben Beispiel: queryCtx := DBMS_XMLQuery.newContext('SELECT * FROM emp'); eigentliche Generierung von XML mittels der Funktion "getXML()"; Rückgabewert ist das XML-Dokument als CLOB Beispiel: result := DBMS_XMLQuery.getXML(queryCtx);

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API (SELECT) declare queryCtx DBMS_XMLquery.ctxType; result CLOB; begin queryCtx := DBMS_XMLQuery.newContext('SELECT * FROM emp'); result := DBMS_XMLQuery.getXML(queryCtx); printClobOut(result); DBMS_XMLQuery.closeContext(queryCtx); end; /

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API (SELECT) Funktion "getDTD()" liefert die Document Type Definition Funktionen "setSkipRows()" und "setMaxRows()" analog zur XSU Java API Umbenennung von Standard-Tag-Namen über die Funktionen "setRowsetTag()" und "setRowTag()" möglich Binding

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API (SELECT) declare queryCtx DBMS_XMLquery.ctxType; result CLOB; begin queryCtx := DBMS_XMLQuery.newContext( 'SELECT * FROM emp WHERE empno = :EMPNO AND ename = :ENAME'); DBMS_XMLQuery.setBindValue(queryCtx,'EMPNO',7566); DBMS_XMLQuery.setBindValue(queryCtx,'ENAME','JONES'); result := DBMS_XMLQuery.getXML(queryCtx); printClobOut(result); DBMS_XMLQuery.closeContext(queryCtx); end; /

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API Erzeugung eines Context Handles mittels der Funktion "newContext()"; Name der Zieltabelle wird als Parameter übergeben Beispiel: saveCtx := DBMS_XMLSave.newContext('emp'); eigentliche Ausführung der Schreiboperation mittels "insertXML()", "updateXML()" oder "deleteXML()"; Übergabeparameter sind das XML-Dokument als CLOB oder VARCHAR2 und der Name der Zieltabelle als VARCHAR2

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API (INSERT) "setUpdateColumn()" optional create or replace procedure testInsert(xmlDoc IN CLOB, tableName IN VARCHAR2) is insCtx DBMS_XMLSave.ctxType; rows number; begin insCtx := DBMS_XMLSave.newContext(tableName); DBMS_XMLSave.clearUpdateColumnList(insCtx); DBMS_XMLSave.setUpdateColumn(insCtx,'EMPNO'); rows := DBMS_XMLSave.insertXML(insCtx, xmlDoc); DBMS_XMLSave.closeContext(insCtx); end; /

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API (UPDATE) "setUpdateColumn()" optional create or replace procedure testUpdate(xmlDoc IN CLOB, tableName IN VARCHAR2) is updCtx DBMS_XMLSave.ctxType; rows number; begin updCtx := DBMS_XMLSave.newContext(tableName); DBMS_XMLSave.clearUpdateColumnList(updCtx); DBMS_XMLSave.setUpdateColumn(updCtx,'SAL'); DBMS_XMLSave.setUpdateColumn(updCtx,'JOB'); DBMS_XMLSave.setKeyColumn(updCtx,'EMPNO'); rows := DBMS_XMLSave.updateXML(updCtx, xmlDoc); DBMS_XMLSave.closeContext(updCtx); end; /

Oberseminar Datenbanken Andreas Rebs, 01INM XSU PL/SQL API (DELETE) "setKeyColumn()" optional create or replace procedure testDelete(xmlDoc IN CLOB, tableName IN VARCHAR2) is delCtx DBMS_XMLSave.ctxType; rows number; begin delCtx := DBMS_XMLSave.newContext(tableName); DBMS_XMLSave.setKeyColumn(delCtx,'DEPTNO'); rows := DBMS_XMLSave.deleteXML(delCtx, xmlDoc); DBMS_XMLSave.closeContext(delCtx); end; /

Oberseminar Datenbanken Andreas Rebs, 01INM Zusammenfassung leistungsfähiges Werkzeug zum Daten- austausch zwischen XML und relationalen Datenbanken verschiedene Möglichkeiten der Nutzung von XSU vorhanden fehlende Möglichkeit für UPDATE- und DELETE-Operationen bei Zugriff über das Command Line Front End

Oberseminar Datenbanken Andreas Rebs, 01INM Quellen Oracle XML SQL Utility User Guide oc_library/adx04xsu.html oc_library/adx04xsu.html Oracle9i Application Developer's Guide eu.oracle.com/otndoc/oracle9i/901_doc/appdev. 901/a88894/toc.htm eu.oracle.com/otndoc/oracle9i/901_doc/appdev. 901/a88894/toc.htm Oracle8i Application Developer's Guide _library/817_doc/appdev.817/a86030/adx04xsu. htm _library/817_doc/appdev.817/a86030/adx04xsu. htm