Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


18.5.3

Parameter


Folgender Codeausschnitt stellt eine Beispiel-Anwendung dar, der per Kommandozeile ein Such-String übergeben wird. Beim Aufruf werden alle Einträge in der Titel-Tabelle gesucht, deren Titel den übergebenen Such-String enthalten:
  package demo.jdbc;

  import java.sql.*;

  public class SimpleSQLDemo {

    public static void main(String args[]) {
      try {
        // Verbindung zur Datenbank aufbauen
        String driver = "oracle.jdbc.driver.OracleDriver";
        String url = "jdbc:oracle:thin:@localhost:1521:orcl";
        String user = "shop";
        String password = "shop";
        Class.forName(driver);
        Connection con = DriverManager.getConnection(url, user, password);
        // Statement-Objekt erzeugen
        Statement stmt = con.createStatement();
        // Parameter in SQL-String einbauen
        String sql = "SELECT * FROM TITEL t ";
        sql += " WHERE t.TITEL LIKE '%"+args[0]+"%'";
        // Abfrage ausführen
        ResultSet rs = stmt.executeQuery(sql);
        // Ergebnis bearbeiten
        while(rs.next()) {
          System.out.println(rs.getString("TITEL"));
        }
        // Verbindung schließen
        con.close();
      } catch(Exception e) {
        System.err.println("Fehler: "+e.getMessage());
      }
    }
  }
Der Such-String wird über String-Operationen in die SQL-Anweisung eingebaut, wie folgende Zeilen zeigen:
  String sql = "SELECT * FROM titel t ";
  sql += " WHERE t.titel LIKE '%"+args[0]+"%'";
Dabei muss vor allem die Syntax des verwendeten Datenbanksystems beachtet werden. Beim Einsetzen von Zahlenwerten und Zeichenketten ist das noch relativ einfach, da die Syntax standardisiert ist und auch von allen Datenbanksystemen unterstützt wird. Schwieriger wird es bei der Verwendung von Datum-Typen. Mit einem Oracle-Server wäre es denkbar, in den SQL-String automatisch das Datum durch Aufruf der Stored Function TO_DATE() einzubauen, wie folgender Ausschnitt zeigt:
  String sql = "SELECT * FROM bestellungen b ";
  sql += "b.DATUM > TO_DATE('dd.mm.yyyy', '01.01.1999')";
  stmt.executeUpdate(sql);
Prinzipiell können im SQL-String auch alle anderen SQL-Funktionen aufgerufen werden, die in der Ziel-Datenbank zur Verfügung stehen.

Recht beliebt ist die Verwendung eindeutiger Nummern als Primärschlüssel in INSERT-Anweisungen, die bei Oracle von SEQUENCE-Objekten erzeugt werden:
String sql;
sql = "INSERT INTO autoren VALUES('Singer','Reiner',1,2,AUT_SEQ.NEXTVAL)";
stmt.executeUpdate(sql);


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.