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);