next up previous contents
Nächste Seite: Webseiten Aufwärts: Redaktionssystem Vorherige Seite: Source Code und Projekt-Konfiguration   Inhalt

Java-Zugriff auf Oracle mit JDBC

Es werden einige Aspekte der Nutzung von JDBC am Beispiel der Klasse ``MainFrame'' der Demoanwendung vorgestellt. Die Kenntnis des Handbuches wird im weiteren vorausgesetzt.

Die Demoanwendung unterstüzt nur einen kleinen Ausschnitt der geplanten Gesamtfunktionalität des Redaktionssystems:

Die Vergabe von

erfolgt dabei automatisch über den Aufruf der entsprechenden PL/SQL-Prozedur, welche die referenzielle Integrität gewährleistet. Der Redakteur hat keinen Einfluss auf die Vergabe dieser beiden Attribute.

Als zusätzliches ``Gimmick'' ist ein einfaches SQL-Interface implementiert, welches das Absetzen von SQL-Anfragen ermöglicht. Dieses Tool hat sich während der Entwicklungsphase bewährt; etwas ähnliches könnte aber auch im eigentlichen Redaktionssystem für Administratoren nützliche Dienste erweisen, falls schnell der Inhalt der DB kontrolliert werden soll. Den normalen Redakteuren sollte dies jedoch nicht zugänglich sein. Damit der Prototyp nicht unnötig aufgebläht wird und übersichtlich bleibt, werden alle Fehlermeldungen im Ausgabefenster des SQL-Tools angezeigt. (Gut, nicht der beste Stil, aber auch aus schlechten Beispielen kann man lernen.)

Literaturhinweis:

Das SQL-Tool wurde unter Verwendung von Code aus ``Java Examples in a Nutshell'' von David Flanagan (erschienen im O'Reilly-Verlag) erstellt. Dieses Buch ist ausserdem eine hervorragende Quelle für weiteren Java-Beispielcode.

JDBC-Beispiele finden sich z. B. auch im OTN oder in den offiziellen Oracle Dokumentationen.

Allgemeines Schema bei JDBC:

Es ist jeweils angegeben, mit welchen Methodenaufrufe der Klasse ``MainFrame'' die jeweiligen Aktionen durchgeführt werden.

  1. Treiber laden:
    Class.forName( TreiberName )

    Beispiel in der Methode ``jToggleButtonVerbindung_actionPerformed()''

  2. Connection herstellen:
    DriverManager.getConnection(Datenbank, Benutzer, Passwort)

    Beispiel in der Methode ``doConnect()'';
    wird von ``jToggleButtonVerbindung_actionPerformed()'' aufgerufen

  3. Statement erzeugen:
    createStatement();

    Beispiel in der Methode ``jButtonArtikelSpeichern_actionPerformed()''

  4. SQL-Abfragen losschicken und Resultset entgegennehmen:
    ResultSet result = statement.executeQuery( ``SELECT...'' );

    Beispiele in der Methode ``jButtonArtikelSpeichern_actionPerformed()'' und ``jButtonArtikellisteAktualisieren_actionPerformed()''

  5. Connection schliessen:
    Connection.close();

    Beispiel in der Methode ``deConnect()'';
    wird von ``jToggleButtonVerbindung_actionPerformed()'' aufgerufen

Wichtige Klassen und Interfaces aus java.sql.*

Wenn man sich mit diesen Klassen vertraut gemacht hat, sind die wichtigsten Grundlagen bekannt.

Einfügen von Datensätzen mit einem PL/SQL Procedurce Call In der Datenbank sind PL/SQL-Prozeduren für das Einfügen von Datensätzen angelgt. Diese sollen benutzt werden, damit die Intergrität der Daten gewährleistet wird. Somit ist der kritische Teil der Anwendungslogik vom Redaktionssystem gekapselt.

Es gibt zwei verschiedene unterstützte Syntaxe, wenn gespeicherte PL/SQL-Prozeduren (oder Funktionen) mit JDBC aufgerufen werden:

Beide Möglichkeiten sind in der Oracle Dokumentation ausführlich beschrieben
(``Oracle9i Application Developer's Guide - Fundamentals'').

In der Demoanwendung wird in der Methode ``jButtonArtikelSpeichern_
actionPerformed'' die PL/SQL-Prozedur ``proc_insert_artikel_inpara'' (vgl. Abschnitt Prozeduren) verwendet, um die Artikel abzuspeichern. Diese PL/SQL-Prozedur hat keine Rückgabeparameter (``inout'' oder ``out'') und ist einfacher zu handhaben, als Prozeduren mit Rückgabewerten, weil kein ``Cursor'' verwendet werden muss. Für das zu erstellende Redaktionssystem wird auf die Prozedur ``proc_insert_artikel'' verwiesen; sie gibt die automatisch vom System erzeugten Werte für ``Id'' und ``Version'' zurück.


next up previous contents
Nächste Seite: Webseiten Aufwärts: Redaktionssystem Vorherige Seite: Source Code und Projekt-Konfiguration   Inhalt
Christian Raskob 2003-02-14