import java.sql.*; import java.io.*; public class Exmatrikulierer { // String, der die DB-Verbindung beschreibt. private static final String CONNECT_URL = "jdbc:oracle:oci8:@lsintern-db"; public static void main(String[] argv) { // ------------------------------------------------------------ // -- Variablen // ------------------------------------------------------------ boolean fertig = false; // Flag, ob der Benutzer aufhören will String line = null; // Aktuelle Eingabezeile int matr_nr = 0; // Aktuelle Matrikelnummer BufferedReader in = // Reader für Consoleneingabe new BufferedReader(new InputStreamReader(System.in)); Connection conn = null; // Verbindung zu Oracle PreparedStatement sql_exmatrikuliere = null; // Anfrage zum Exmatrikulieren String name = null; // user für Verbindung String passwd = null; // passwd für Verbindung // ------------------------------------------------------------ // -- Code // ------------------------------------------------------------ System.out.println("Dieses Programm exmatrikuliert " + "Studenten anhand der Matrikelnummer.\n"); // Benutzeridentifikation und Authentisierung try { System.out.println("Benutzername: (/ = \"identified externally\"):"); name = in.readLine(); if (!name.equals("/")) { System.out.println("Passwort:"); passwd = in.readLine(); } } catch (IOException e) { System.out.println("Fehler beim Lesen der Eingabe: " + e); System.exit(-1); } // Initialisierung der Datenbankverbindung und der Anfrage try { System.out.println("Verbindungsaufbau zu: " + CONNECT_URL); Class.forName("oracle.jdbc.driver.OracleDriver"); if (passwd == null) conn = DriverManager.getConnection(CONNECT_URL); else conn = DriverManager.getConnection(CONNECT_URL, name, passwd); conn.setAutoCommit(false); sql_exmatrikuliere = conn.prepareStatement("delete from studenten where matrnr = ?"); } catch (Exception e) { System.err.println("Folgender Fehler ist bei der Initialisierung aufgetreten: " + e); System.exit(-1); } // Studenten exmatrikulieren while(!fertig) { // Matrikelnummer abfragen System.out.println("Matrikelnummer (0 zum Beenden):"); try { line = in.readLine(); } catch (IOException e) { System.out.println("Fehler beim Lesen der Eingabe: " + e); fertig = true; continue; } // Eingabe konvertieren try { matr_nr = Integer.parseInt(line); } catch(NumberFormatException nfe) { System.out.println("Eingabe ist keine Matrikelnummer!"); continue; } // Will Benutzer aufhören? if(matr_nr == 0) { fertig = true; continue; } // Exmatrikulierung an Datenbank schicken try { sql_exmatrikuliere.setInt(1, matr_nr); int rows = sql_exmatrikuliere.executeUpdate(); if (rows == 1) System.out.println("Student gelöscht."); else System.out.println("Kein Student mit dieser Matrikelnummer in der Datenbank!"); } catch (SQLException e) { System.out.println("Fehler beim Ausführen der Anfrage: " + e); fertig = true; continue; } } // Aufräumen try { sql_exmatrikuliere.close(); conn.close(); } catch (SQLException e) { System.out.println("Fehler beim Schliessen der DB-Verbindung: " + e); } } }