/**
 * Beispielklasse fuer die Arbeit mit JDBC.
 *
 * Vorbedingung: Umgebungsvariable CLASSPATH 
 *   muss /home/pubadm/bin/Mysql/lib/mysql.jar enthalten
 *
 * @version 2002-06-12
 * @author Andreas Noack
 */

import java.sql.*;

public class DatenbankDemo {

  public static void main(String[] args) {
      // url ist jdbc:mysql://<host>/<datenbankname> (test muss ersetzt werden)
    final String url = "jdbc:mysql://ep.informatik.tu-cottbus.de/test";
    final String driver = "org.gjt.mm.mysql.Driver";
    Connection con = null;      // Verbindung zur Datenbank
    Statement statement;        // SQL-Kommando
    ResultSet result;           // Ergebnis einer Anfrage

    // Datenbanktreiber laden
    try {
      Class.forName(driver);
    } catch (ClassNotFoundException e) {
      System.out.println(e);
    }

    try {
      // Verbindung zur Datenbank herstellen
      con = DriverManager.getConnection(url, "", "");
      statement = con.createStatement();
    
      // eventuell existierende Tabellen loeschen
      result = statement.executeQuery("SHOW TABLES");
      while (result.next()) {
        if (result.getString(1).equals("Professor")
            || result.getString(1).equals("Vorlesung")
            || result.getString(1).equals("Semester")) {
          statement.executeUpdate("DROP TABLE " + result.getString(1));
        }
      }
    
      // Tabellen erstellen und fuellen
      statement.executeUpdate("CREATE TABLE Professor (id INT, name CHAR(50))");
      statement.executeUpdate("INSERT INTO Professor VALUES (0,'Lewerentz')");
      statement.executeUpdate("INSERT INTO Professor VALUES (1,'Thalheim')");
      
      statement.executeUpdate("CREATE TABLE Vorlesung (id INT, name CHAR(50))");
      statement.executeUpdate
        ("INSERT INTO Vorlesung VALUES (0,'Software-Technik 1')");
      statement.executeUpdate
        ("INSERT INTO Vorlesung VALUES (1,'Software-Technik 2')");
      statement.executeUpdate
        ("INSERT INTO Vorlesung VALUES (2,'Datenbanken 3')");
      statement.executeUpdate
        ("INSERT INTO Vorlesung VALUES (3,'Datenbanken 5')");
        
      statement.executeUpdate
        ("CREATE TABLE Semester (Inhalt INT, Lehrer INT, Jahr INT)");
      statement.executeUpdate("INSERT INTO Semester VALUES (0,0,2001)");
      statement.executeUpdate("INSERT INTO Semester VALUES (1,0,2002)");
      statement.executeUpdate("INSERT INTO Semester VALUES (2,1,2002)");
      statement.executeUpdate("INSERT INTO Semester VALUES (3,1,2002)");

      // Anfrage stellen
      result = statement.executeQuery( 
          "SELECT Professor.name, Vorlesung.name, Semester.Jahr "
        + "FROM Professor, Vorlesung, Semester "
        + "WHERE Semester.Lehrer = Professor.id "
        + "AND Semester.Inhalt = Vorlesung.id");
      while (result.next()) { // Zeilen und Spalten laufen von 1 bis n
        System.out.println(result.getString(1) + " | " 
          + result.getString(2) + " | " + result.getInt(3));
      }

      // Verbindung zur Datenbank schliessen
      statement.close();
      con.close();
    } catch (SQLException e) {
      System.out.println(e.getMessage());
    }
  } // main

} // DatenbankDemo
