// Programm 5-8a:  ./JDBCclientserver/SqlDirektClientApplet.java
import java.awt.*;             // GUI Fenster etc.
import java.awt.event.*;       // GUI Events
import java.io.*;              // für Streams von/zum Server
import java.net.*;             // Internet
public class SqlDirektClientApplet extends java.applet.Applet
                                   implements ActionListener {
  // Internet-Adresse und -Port des Servers
  static final String server = "localhost"; 
  static final int port = 6789;
  // GUI-Komponenten
  Button ausführen = new Button("Ausführen!");
  TextArea ein = new TextArea("SELECT", 5, 60);
  TextArea aus = new TextArea();

  public void init() {
    Panel eingabe = new Panel(new BorderLayout());
    Panel knöpfe = new Panel(new FlowLayout(FlowLayout.LEFT));
    knöpfe.add(ausführen);
    eingabe.add(knöpfe, "North");
    eingabe.add(ein, "Center");
    add(eingabe, "North");
    add(aus, "Center");
    aus.setEditable(false);             // für Eingaben sperren
    ausführen.addActionListener(this);  // Eventlistener reg.
    setSize(500, 400);                  // Fenstergröße
    setVisible(true);                   // Fenster anzeigen
  }

  public void actionPerformed(ActionEvent e) {
    String sql = ein.getText();
    try {
      String res = sendeSql(sql);
      aus.setText(res);
   }
    catch (Exception ex) {
      aus.setText("SQL: " + "\nFehler:\n" + ex.getMessage());
      ex.printStackTrace();
    }
  }

  private String sendeSql(String text) throws Exception {
    Socket socket = new Socket(server, port);
    PrintWriter out =
                     new PrintWriter(socket.getOutputStream());
    out.print(text + "\0"); out.flush();
    InputStream in  = socket.getInputStream();
    StringBuffer buf = new StringBuffer();
    for (int ch; (ch = in.read()) > -1;) 
      buf.append((char) ch);
    socket.close();
    return buf.toString();
  }

  public static void main(String[] args) {  // Programmstart
    new SqlDirektClientApplet();                  // Client-Start
  }
}                                 // Ende class SqlDirektClientApplet
