Lösung - WI

Werbung
Fachbereich Angewandte Informatik
Dipl.-Inf. Christian Pape
Datenbanksysteme 2
WS 11/12
6. Übung
Aufgabe 1:
In dieser Übung sollen Sie eine kleine Java-Anwendung schreiben, die auf
die Oracle-Datenbank zugreift. Die Kommunikation mit der Datenbank
wird über JDBC realisiert. Im folgenden wird zunächst ein Projekt und
eine Hauptklasse angelegt. Des weiteren müssen die entsprechenden JDBCBibliotheken des Oracle Clients dem Projekt hinzugefügt und als Abhängigkeit
bekannt gemacht werden, damit diese dann auch zur Laufzeit gefunden werden.
Hierzu öffnen Sie zunächst die Entwicklungsumgebung Eclipse und erzeugen
mit File→New→Java Project ein neues Projekt.
Jetzt erzeugen Sie eine neue Hauptklasse mit File→New→Class und nennen Sie diese ”DatenbankAbfrage”. Lassen Sie sich ausserdem die MainMethode generieren in dem Sie das entsprechende Häkchen setzen.
Als nächster Schritt müssen nun die JDBC-Bibliotheken bekannt gemacht
werden. Hierzu öffnen Sie mit Project→Properties die Eigenschaften Ihres
Projektes. Wählen Sie nun im linken Teil des Dialogs den Punkt Java Build
Path und aktivieren Sie nun den Bereich Libraries und klicken Sie auf Add
External JARs.
Navigieren Sie nun zu dem Ordner C:\Programme\Oracle\jdbc\lib und
fügen Sie die zwei Dateien classes12.jar und nls_charset12.jar als Abhängigkeit ihrem Projekt hinzu.
Wählen Sie nun den Bereich Order and Export und setzten Sie jeweils
Häkchen vor die zwei neu hinzugefügten Dateien.
Öffnen Sie nun Ihre Klasse DatenbankAbfrage und füllen Sie Ihre MainMethode:
import
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
public class DatenbankAbfrage {
public static void main(String args[]) {
Connection connection;
Statement stmt;
// Verbindung erzeugen
try {
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
connection = DriverManager.getConnection(
"jdbc:oracle:thin:@mtsthelens.informatik.hs-fulda.de:1521:ORALV9A",
"BENUTZERNAME", "PASSWORT");
stmt = connection.createStatement();
ResultSet resultSet = stmt.executeQuery("SELECT PNR, PNAME FROM PERS");
while (resultSet.next()) {
System.out.println(resultSet.getInt("PNR") + "\t"
+ resultSet.getString("PNAME"));
}
stmt.close();
connection.close();
} catch (SQLException sqlException) {
System.out.println("Fehler bei Abfrage!");
sqlException.printStackTrace();
}
}
}
Ersetzen Sie dabei BENUTZERNAME und PASSWORT durch Ihre
Zugangsdaten für die Datenbank.
Führen Sie die Anwendung durch Run→Run As→Java Application aus.
Es sollte Ihnen nun alle Personalnummern und die zugehörigen Namen ausgegeben werden.
Aufgabe 2:
Modifizieren Sie nun den Quelltext dahingehend, dass neben PNR und PNAME
auch PGEHALT und PBONUS ausgegeben werden.
import
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
public class DatenbankAbfrage {
public static void main(String args[]) {
Connection connection;
Statement stmt;
// Verbindung erzeugen
try {
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
connection = DriverManager.getConnection(
"jdbc:oracle:thin:@mtsthelens.informatik.hs-fulda.de:1521:ORALV9A",
"BENUTZERNAME", "PASSWORT");
stmt = connection.createStatement();
ResultSet resultSet = stmt.executeQuery(
"SELECT PNR, PNAME, PGEHALT, PBONUS FROM PERS");
while (resultSet.next()) {
System.out.println(resultSet.getInt("PNR") + "\t"
+ resultSet.getString("PNAME") + "\t"
+ resultSet.getInt("PGEHALT") + "\t"
+ resultSet.getInt("PBONUS"));
}
stmt.close();
connection.close();
} catch (SQLException sqlException) {
System.out.println("Fehler bei Abfrage!");
sqlException.printStackTrace();
}
}
}
Aufgabe 3:
Modifizieren Sie nun das Programm so, dass der Benutzer zur Eingabe einer
PNR aufgefordert wird. Nach der Eingabe sollen alle Untergebenen mit
PNR, PNAME, PGEHALT und PBONUS ausgegeben werden.
Tipp: Verwenden Sie für die Eingabe am Besten einen BufferedReader in
der Form
BufferedReader reader = new BufferedReader(
new InputStreamReader(System.in));
String zeile = reader.readLine();
und für die Anfrage an die Datenbank ein PreparedStatement. Weitere
Informationen hierzu finden Sie im Package java.sql unter:
http://java.sun.com/javase/6/docs/api/index.html
import
import
import
import
import
import
import
import
java.sql.Connection;
java.sql.DriverManager;
java.sql.PreparedStatement;
java.sql.ResultSet;
java.sql.SQLException;
java.io.BufferedReader;
java.io.IOException;
java.io.InputStreamReader;
public class DatenbankAbfrage {
public static void main(String args[]) {
Connection connection;
PreparedStatement stmt;
// Verbindung erzeugen
try {
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
connection = DriverManager.getConnection(
"jdbc:oracle:thin:@mtsthelens.informatik.hs-fulda.de:1521:ORALV9A",
"BENUTZERNAME", "PASSWORT");
stmt = connection.prepareStatement(
"SELECT PNR, PNAME,PGEHALT,PBONUS FROM PERS WHERE MNR=?");
BufferedReader reader = new BufferedReader(
new InputStreamReader(System.in));
String pnr = "";
System.out.print("PNR?");
try {
pnr = reader.readLine();
} catch (IOException ioException) {
System.out.println("Fehler bei Eingabe!");
ioException.printStackTrace();
}
stmt.setString(1, pnr);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {

System.out.println(resultSet.getInt("PNR") + ""

+ resultSet.getString("PNAME") + ""

+ resultSet.getInt("PGEHALT") + ""
+ resultSet.getInt("PBONUS"));
}
stmt.close();
connection.close();
} catch (SQLException sqlException) {
System.out.println("Fehler bei Abfrage!");
sqlException.printStackTrace();
}
}
}
Herunterladen