Java zum zugriff auf datenbanken sqlj mahboubeh pakdaman 15 01 2001
This presentation is the property of its rightful owner.
Sponsored Links
1 / 28

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


  • 57 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Java zum Zugriff auf Datenbanken SQLJ Mahboubeh Pakdaman 15.01.2001

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


Java zum zugriff auf datenbanken sqlj mahboubeh pakdaman 15 01 2001

1

1

Java zum Zugriff auf DatenbankenSQLJMahboubeh Pakdaman15.01.2001


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


Java complierung

19

Java-Complierung


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.


Gespeicherte proz mit java

21

Gespeicherte Proz. mit Java


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.


  • Login