java zum zugriff auf datenbanken sqlj mahboubeh pakdaman 15 01 2001
Download
Skip this Video
Download Presentation
Java zum Zugriff auf Datenbanken SQLJ Mahboubeh Pakdaman 15.01.2001

Loading in 2 Seconds...

play fullscreen
1 / 28

Java zum Zugriff auf Datenbanken SQLJ Mahboubeh Pakdaman 15.01.2001 - PowerPoint PPT Presentation


  • 94 Views
  • Uploaded on

1. 1. Java zum Zugriff auf Datenbanken SQLJ Mahboubeh Pakdaman 15.01.2001. 2. 2. Ablauf. Was ist SQLJ? Warum SQLJ? Brauchen wir noch JDBC? Beispiele. Drei Teile der SQLJ-Spizifikation und die Anwendung dieser Konzepte. Fazit. 3. Was ist SQLJ?.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Java zum Zugriff auf Datenbanken SQLJ Mahboubeh Pakdaman 15.01.2001' - ajaxe


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
ablauf

2

2

Ablauf
  • Was ist SQLJ?
  • Warum SQLJ?
  • Brauchen wir noch JDBC?
  • Beispiele.
  • Drei Teile der SQLJ-Spizifikation und die Anwendung dieser Konzepte.
  • Fazit.
was ist sqlj

3

Was ist SQLJ?
  • SQLJ ist eine neue offene Standard Application Programming Interface(API) für die statische Einbettung in Java Programmen.
  • SQLJ ist eine Produktion von Oracle , IBM, Sybase, Tandom, Javasoft , Microsoft , XDB und Informix.
warum sqlj

4

Warum SQLJ?
  • SQLJ vereinfacht Schreiben , Verwaltung und Debbugging Java Datenbase Applications.
  • SQLJ basiert auf dem Einbettungsprinzip ,d.h. SQL Anweisungen sind zur Übersetzungszeit definiert: 1. Weniger Fehlerträchtig. 2. Mächtiger und mehr vertrauenbar um Codes zu schreiben. 3. Java-Quelltext sind kompakt und besser lesbar.
brauchen wir noch jdbc

5

Brauchen wir noch JDBC?
  • JA. statische SQL =========> SQLJ dynamische SQL =========> JDBC
  • SQLJ und JDBC sind interoperabil : Man kann die SQLJ und JDBC Anweisungen in ein SQLJ Application benutzen.
beispiele

6

Beispiele
  • JDBC String name; int id=37115; float salary=2000; PreparedStatement pstm=con.preparedStatement( “SELECT ename FROM emp WHERE empno=? And sal >? ”) ; pstmt.setInt(1,id); pstmt.setFloat(2,salary); ResultSet rs=psmt.executeQuary(); while(rs.next()) { name=rs.getString(1); System.out.println(“Name is :”+name); } rs.close(); psmt.close();
  • SQLJ String name; int id=37115; float salary=2000; #sql {SELECT ename INTO :name FROM emp WHERE empno=:id AND sal> :salary}; System.out.println(“Name is :”+name);
prinzip von sqlj

7

Prinzip von SQLJ

Data.java

Data.class

Data.sqlj

SQLJ Translator

Java Compiler

drei teile der sqlj spezifikation und die anwendung dieser konzepte

8

8

Drei Teile der SQLJ-Spezifikation und die Anwendung dieser Konzepte
  • Part 0 : SQLJ Embedded -Die wichtigen SQLJ-Komponenten, -Sqlj-klauseln und HostVariablen/Ausdrücken -Itratoren -Kontexte -Der Sqlj-Translator und Profile
  • Part 1 : SQLJ gesteuerte Prozeduren/Funktionen - Benutzen Java static Funktionen als gesteuerte Prozeduren /Funktionen.
  • Part 2 : SQLJ Datentypen - Nutzung von Java Klassen zur Implementierung von SQL Datentypen.
part 0 die wichtigen sqlj komponenten

9

Part 0-Die wichtigen SQLJ-Komponenten
  • Der Translator übersetzt ein gegebenes SQLJ-Programm in ein entsprechendes Java-Programm.
  • Das Laufzeitsystem ist im Java-Package sqlj.runtime definiert und besteht aus Menge von Java-Klassen die den Datenbankzugriff realisieren.
  • Ein Customizer ist ein Komponent, das das erzeugte Profil an ein DBMS anpasst.
sqlj klauseln

10

10

SQLJ-Klauseln
  • Sqlj-Klauseln bilden den Mechanismus zur Einbettung von Sql in Java-Code. Es gibt zwei Formen: 1.Deklarationen von Java-Klassen für Iteratoren und Kontexte sowie 2.Ausführbare Sql-Anweisungen: # sql { SQL-Operationen} ; - Select Anweisungen und Ausdrücken. - Anweisungen zum Auslesen von Daten (select..into,fetch). - Die DML-Operationen(insert, update und delete). - DDL-Operationen(create table). - Aufruf von gespeicherte Prozeduren und Funktionen.
host variablen ausdr cken

11

11

Host-Variablen/-Ausdrücken
  • Ein Host-Ausdruck ist ein Ausdruck in Java , der in einer SQL-Klausel zum Datenaustausch eingesetzt wird.
  • Kennzeichnung: “:”+(Richtung der Datenübertrag)+Ausdrücken Richtung der Datenübergang (IN,OUT,INOUT): IN Übergang von Java-Werten an die Sql- Anweisungn. OUT Ergebnis der Ausführung der Sql- Anweisung zurück zum Java-Programm. INOUT in beiden Richtungen gleichzeitig.
beispiele1

12

Beispiele
  • void updateStock ( Sting isbn , int stock )throws Exception{ #sql { UPDATE book SET stock=:stock where isbn=:isbn}; }
  • string findBook (String isbn)throws Exception{ String title; #sql {SELECT title INTO :title FROM book where isbn=:isbn}; }
  • #sql { INSERT INTO book_order VALUES ( :IN (++orderID), :IN custId), :IN(Date.ValueOf(“1999-09-16”)), 0) };
  • #sql price={ VALUES( compute-price(:IN orderNo))};
iteratoren

13

13

Iteratoren
  • Iterator ist ein Cursor-basierter Mechanismus für den Zugriff auf Mengen von Ergebnistupeln(vergleichbar mit ResultSet von JDBC). Iteratoren sind streng typisiert.
  • Nutzung: 1- Definition der Iterator-Klasse durch eine Sql-Deklaration. 2- Vereinbarung einer Iterator-Variablen. 3- Aufruf der Sql-Anweisung mit Instanziierung eines Iterator-Objekt. 4- Navigation über die Ergebnismenge und Auslesen der Daten. 5- Freigabe der Ressourcen durch Schließen des Iterators.
  • Es gibt zwei Arten von Iteratoren.
iteratoren1

14

Iteratoren
  • Benannte Iteratoren: Zugriff über die Spaltennamen #sql public iterator Byname( String isbn , String title ); Byname iter; #sql iter={ SELECT isbn , title FROM book }; while( iter.next()){ System.out.println(“isbn=”+iter.isbn()); System.out.println(“title=”+iter.title()); } iter.close();
  • Positionierte Iteratoren:Zugriff über die Host-Variablen #sql iterator ByPos( String, flaot); ByPos iter ; String title; float price; #sql iter={ SELECT title, price From book}; while(true) { #sql{ FETCH : iter INTO :title , : price}; if(iter.endFetch()) break; System.out.println(“title=”+title); System.out.println(“price=”+price); } iter.close();
verbindungskontexte

15

Verbindungskontexte
  • Eine Datenbankverbindung wird in SQLJ durch einen Verbindungskontext repräsentiert.Es gibt: - Defaultkontext(die einfachsteVerbindungskontext) - Kontextumschaltung(für mehrere Verbindungen). - Kontextqualifizierung. - Kontextklassen ( sie sind insbesondere sinvoll für eine semantische Überprüfung der Sql-Klauseln durch den Sqlj- Translator .)
der sqlj translator und profile

16

Der SQLJ-Translator und Profile
  • Aufgabe des sqlj-Translators: 1- Ersetzung der Klauseln durch entsprechenden java- Code mit Aufrufen: > sqlj sqljDemo.sqlj 2- Syntaktisch und semantische Überprüfung der Sql- Anweisungen(online und offline), 3- Generierung der Java-Codes für die deklarierten Iteratoren- und Kontextklassen, 4- Erzeugung der Profile.
profile

17

Profile
  • Sind serialisierte Instanzen mit der “.ser” Endung.
  • werden von dem Translator generiert.
  • enthalten Informationen über die Sql-Operationen über Typ und Übergabeparameter und Ergebnisdaten.
  • Dienen zur Customization.
  • Beispiel
beispiel

18

Beispiel
  • Sql-Klausel aus klasse SqlDemo: #sql {UPDATE book SET stock=:stock Where isbn=:isbn };
  • Profildatei : profile SqlDemo_SJProfile0 entry 0 #sql { UPDATE book SET stock=? Where isbn =? }; line number :27 PREPARED_STATEMENT executed via EXECUTE_UDATE role is STATEMENT descriptor is null contain 2 parameters : 1.mode : IN , java type : int (int), sql type: INTEGER , name: stock, maker index: 25 2.mode: IN java type: java.lang.String(java.lang.String) , sql tpye: VARCHER , name: isbn, maker index : 50 result set type is NO_RESULT result set name is null contains no result colums
part 1 sqlj gespeicherte prozeduren funktionen

20

Part 1: SQLJ gespeicherte Prozeduren/Funktionen
  • Sie sind die Prozeduren /Funktionen , die im Datenbankserver gespeichert und ausgeführt werden Vorteile: 1. lokale Zugriff und zentrale Verwaltung, 2. reduzierte Netzwerkbelastung, 3. gesteigerte Performance, 4. Anwendung von Datenbankdiensten, 5. gesenkte Administrationsaufwand, 6. unabhängig von der Client-Umgebung und im beliebigen Sprachen implementierbar.
entwicklung von gespeicherten prozeduren funktionen
Entwicklung von gespeicherten Prozeduren/Funktionen
  • Implementierung : Es ist für einen direkten Datenzugriff mit Sql notwendig.
  • Installation im Server(jar-Archiv): Der Code der Prozedur wird zum Server übertragen.
  • Registrierung(CREATE Prozedur/Funktion): Die Prozedur wird dem Sql-System bekannt gemacht.
  • Aufruf(CALL bzw. VALUES): Die Prozeduren sind von Client-Anwendung nutzbar.
implementierung

23

Implementierung
  • keine GUI_Funktionen realisierbar,
  • Keine Zugriff auf das Lokale Datensystem ist erlaubt,
  • Nur Default-Verbindung zur lokalen Datenbank,
  • Prozeduren /Funktionen sind als Klassenmethoden zu Implementiert(static-methoden ),
  • Es gibt drei Formen von Prozeduren: 1.no SQL, 2.reads SQL data, 3.modifies SQL data. 4.contains SQL
beispiel1

24

Beispiel
  • #sql iterator Iter ( double sum); public static double price (int orderNO)throws SQLException { Iter iter; double res=0.0; #sql iter = { SELECT SUM(b.price * oi.num) From order_item oi , book b Where oi.order_id=:orderno AND oi.isbn=b.isbn}; if(iter.next()) res=iter.sum(); return res; }
installation und registrierung

25

Installation und Registrierung
  • Installation : jar-Archiv CALL sqlj.install_jar (\'url\' ,\' name\', deploy)
  • Registrierung : CREATE Procedure sql-Name( SQL-Signature ) SQL-Eigenschaften External NAME Externe-java-Referenz LANGUAGE JAVA PARAMETER STYL JAVA ;
beispiel2

26

Beispiel
  • Die gespeicherte Prozedur public class Routines { public static double dm2euro ( double val) { return val/1.95583;} }
  • Installation > javac -d . Routines.java. > jar cf routines.jar Routines.class CALL sqlj.install_jar (\' file: ~/routines.jar\' , \'routines_jar \' , 0);
  • Registrierung CREATE FUNKTION dm2euro ( v FLOAT ) RETURNS FLOAT NO SQL EXTERNAL NAME \'routines_jar:Routines.dm2euro\' LANGUAGE JAVA PARAMETER STYLE JAVA;
java klassen f r benutzer definierte sql datentypen sqlj part 2

27

Java-Klassen für benutzer definierte SQL-Datentypen (SQLJ Part 2)
  • Installation der Java-Klassen im Datenbankserver und deren Nutzung als echte SQL_Datentypen.
  • Implementierung der Schnittstelle java.io.Serializable oder java.sql.SQLData
  • Installation: CALL sql.install_jar( \'url\' , \' klass_name \');
  • Registrierung: CREATE.....
fazit

28

Fazit
  • SQLJ und JDBS arbeiten zusammen, um ein complete Set von Optionen für statische und dynamische SQL anzubieten.
  • SQLJ bringt mehr Produktivität und bessere Qualität mit.
  • SQLJ macht Java viel mehr akzeptabel für viele Business Applikationen.
ad