Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » Java in der Datenbank » Praktische Einführung: Java in der Datenbank verwenden

 

Lektion 4: Methoden in Java-Klassen aufrufen

Für den Zugriff auf die Java-Methoden in der Klasse müssen Sie gespeicherte Prozeduren oder Funktionen erstellen, die als Wrapper für die Methoden in der Klasse fungieren.

Voraussetzungen

Schließen Sie die Schritte in Lektion 1, 2 und 3 ab, bevor Sie Lektion 4 versuchen.

In dieser Lektion wird davon ausgegangen, dass Sie die Rollen und Privilegien haben, die im Abschnitt "Privilegien" am Anfang dieser praktischen Einführung aufgeführt sind: Praktische Einführung: Java in der Datenbank verwenden.

Kontext und Bemerkungen

Die Java-Klassendatei, die die kompilierten Methoden aus dem Invoice-Beispiel enthält, wurde in die Datenbank geladen.

 Aufgabe
  1. Erstellen Sie die folgende gespeicherte SQL-Prozedur, um die Methode Invoice.main in der Beispielklasse aufzurufen:

    CREATE PROCEDURE InvoiceMain( IN arg1 CHAR(50) )
    EXTERNAL NAME 'Invoice.main([Ljava/lang/String;)V'
    LANGUAGE JAVA;

    Diese gespeicherte Prozedur agiert als Wrapper für die Java-Methode.

  2. Führen Sie die gespeicherte Prozedur aus, um die Java-Methode aufzurufen:

    CALL InvoiceMain('to you');

    In der Datenbankserver-Konsole bzw. im Fenster "Datenbankservermeldungen" wird die Meldung "Hello to you" angezeigt. Der Datenbankserver hat die Ausgabe von System.out dorthin umgeleitet

  3. Die folgenden gespeicherten Prozeduren veranschaulichen, wie Argumente an die Java-Methoden in der Invoice-Klasse übergeben und Rückgabewerte daraus abgerufen werden: Wenn Sie den Java-Quellcode überprüfen, sehen Sie, dass die init-Methode der Invoice-Klasse sowohl STRING-Argumente als auch DOUBLE-Argumente annimmt. STRING-Argumente werden mit Ljava/lang/String; angegeben. DOUBLE-Argumente werden mit D angegeben. Die Methode gibt "void" zurück und dies wird mit V nach der rechten Klammer angegeben.

    CREATE PROCEDURE init( IN arg1 CHAR(50),
                           IN arg2 DOUBLE, 
                           IN arg3 CHAR(50), 
                           IN arg4 DOUBLE) 
    EXTERNAL NAME 'Invoice.init(Ljava/lang/String;DLjava/lang/String;D)V' 
    LANGUAGE JAVA;
  4. Die folgenden Funktionen rufen Java-Methoden auf, die keine Argumente übernehmen und einen DOUBLE-Wert (D) oder einen STRING-Wert (Ljava/lang/String;) zurückgeben.



    CREATE FUNCTION rateOfTaxation() 
    RETURNS DOUBLE 
    EXTERNAL NAME 'Invoice.rateOfTaxation()D' 
    LANGUAGE JAVA;
    
    CREATE FUNCTION totalSum() 
    RETURNS DOUBLE 
    EXTERNAL NAME 'Invoice.totalSum()D' 
    LANGUAGE JAVA;
    
    CREATE FUNCTION getLineItem1Description() 
    RETURNS CHAR(50) 
    EXTERNAL NAME 'Invoice.getLineItem1Description()Ljava/lang/String;' 
    LANGUAGE JAVA;
    
    CREATE FUNCTION getLineItem1Cost() 
    RETURNS DOUBLE 
    EXTERNAL NAME 'Invoice.getLineItem1Cost()D' 
    LANGUAGE JAVA;
    
    CREATE FUNCTION getLineItem2Description() 
    RETURNS CHAR(50) 
    EXTERNAL NAME 'Invoice.getLineItem2Description()Ljava/lang/String;' 
    LANGUAGE JAVA;
    
    CREATE FUNCTION getLineItem2Cost() 
    RETURNS DOUBLE 
    EXTERNAL NAME 'Invoice.getLineItem2Cost()D' 
    LANGUAGE JAVA;
  5. Das folgende Beispiel veranschaulicht einen einfachen Aufruf an die gespeicherte Prozedur, die als Wrapper für die init-Methode der Invoice-Klasse fungiert:

    CALL init('Shirt',10.00,'Jacket',25.00);
  6. Die folgende SELECT-Anweisung ruft mehrere andere Methoden in der Invoice-Klasse auf:

    SELECT getLineItem1Description() as Item1, 
           getLineItem1Cost() as Item1Cost,
           getLineItem2Description() as Item2, 
           getLineItem2Cost() as Item2Cost,
           rateOfTaxation() as TaxRate, 
           totalSum() as Cost;

    Die SELECT-Anweisung gibt sechs Spalten zurück.

    Item1 Item1Cost Item2 Item2Cost TaxRate Cost
    Shirt 10 Jacket 25 0.15 40.25

Ergebnisse

Sie haben gespeicherte Prozeduren oder Funktionen erstellt, die als Wrapper für die Methoden in der Java-Klasse fungieren. In diesen Lektionen wurden Sie durch die Schritte geführt, die beim Schreiben von Java-Methoden und beim Aufrufen dieser Methoden aus SQL erforderlich sind.

 Siehe auch