// Programm 4-15b:  ./JDBCelementar/EinfachesApplet.java
import java.sql.*;
import java.awt.*;
import java.awt.event.*;

public class EinfachesApplet extends java.applet.Applet 
                             implements ActionListener {
  // GUI-Komponenten
  Button ausführen = new Button("Ausführen!");
  TextArea ein = new TextArea("SELECT", 3, 60);
  TextArea ausgabe = new TextArea();
   // DBMS-Variable
  Connection c;
  Statement s;

  public void init() {
    Panel eingabe = new Panel(new BorderLayout());
    Panel knopf = new Panel(new FlowLayout(FlowLayout.LEFT));
    knopf.add(ausführen);
    eingabe.add(knopf, "North");
    eingabe.add(ein, "Center");
    add(eingabe, "North");
    add(ausgabe, "Center");
    ausgabe.setEditable(false);         // für Eingaben sperren
    setSize(450, 300);                  // Fenstergröße
    setVisible(true);                   // Fenster anzeigen
    try {
      Class.forName("com.imaginary.sql.msql.MsqlDriver"); 
      c = DriverManager.getConnection(
                          "jdbc:msql://p31:1112/Kurse");
      s = c.createStatement();
    }
    catch (Exception ex) {
      ausgabe.setText("Fehler:\n" + ex.getMessage());
    }
    ausführen.addActionListener(this);  // Eventlistener reg.
  }

  public void actionPerformed(ActionEvent e) {
    String sql = ein.getText();
    ResultSet r;
    try {
      if (s.execute(sql)) {           // SQL SELECT ausführen
        r = s.getResultSet();
        ResultSetMetaData rm = r.getMetaData();
        int x = rm.getColumnCount();
        ausgabe.setText("");
        for (int i = 1; i <= x; i++) {
          ausgabe.append(rm.getColumnName(i));
          if (i != x) ausgabe.append(", ");
          else ausgabe.append("\n");
        }
        while(r.next()) {
          for (int i = 1; i <= x; i++) {
            ausgabe.append(r.getString(i));
            if (i != x) ausgabe.append(", ");
            else ausgabe.append("\n");
          }
        }
      }
      else
        ausgabe.setText(String.valueOf(s.getUpdateCount()));
    }
    catch (Exception ex) {
      ausgabe.setText("SQL: " + sql + "\nFehler:\n" + 
                            ex.getMessage());
    }
  }
}                               // Ende class EinfachesApplet
