/* JdbcApplet (c) Stefan Rauch 1999 */
/* Applet, das den Umgang mit dem JDBC zeigt */
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.sql.*;
public class JdbcApplet extends Applet {
BorderLayout layout = new BorderLayout();
TextArea outputArea = new TextArea();
TextField inputField = new TextField();
Panel p;
Button qu1 = new Button("Professoren"); /* Button fuer Professoren */
Button qu2 = new Button("Assistenten"); /* Button fuer Assistenten */
Button qu3 = new Button("Studenten"); /* Button fuer Studenten */
Button qu4 = new Button("Vorlesungen"); /* Button fuer Vorlesungen */
Button qu5 = new Button("hoeren"); /* Button fuer hoeren */
Button qu6 = new Button("voraussetzen"); /* Button fuer voraussetzen */
Button qu7 = new Button("pruefen"); /* Button fuer pruefen */
Button qu8 = new Button("User-Tabellen"); /* Button fuer User-Tabellen */
Connection con; /* Verbindungsobjekt zur Verbindung mit dem DBMS */
Statement stmt; /* Statement-Objekt zur Kommunikation mit DBMS */
public JdbcApplet(){} /* Konstruktor fuer Applet */
public void init() { /* Das Applet initialisieren */
try {
this.setLayout(layout);
this.setSize(700,400);
inputField.setBackground(Color.gray);
inputField.setFont(new Font("Serif",1,14));
inputField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) { /* ActionListener */
String q = inputField.getText(); /* fuer Eingabefeld */
execQuery(q); /* Gibt Query an */
} /* execQuery weiter */
});
outputArea.setBackground(Color.white);
outputArea.setEditable(false);
outputArea.setFont(new Font("Monospaced",1,14));
/* ActionListener fuer jeweiligen Button */
/* gibt Abfrage an Methode execQuery() weiter */
qu1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
execQuery("select persnr,name,rang,raum," +
"gebdatum as Geburtsdatum from Professoren");
}
});
qu2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
execQuery("select persnr, name, fachgebiet, boss," +
"gebdatum as Geburtsdatum from Assistenten");
}
});
qu3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
execQuery("select matrnr, name, semester," +
"gebdatum as Geburtsdatum from Studenten");
}
});
qu4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
execQuery("select * from Vorlesungen");
}
});
qu5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
execQuery("select * from hoeren");
}
});
qu6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
execQuery("select * from voraussetzen");
}
});
qu7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
execQuery("select * from pruefen");
}
});
qu8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
execQuery("select name from sysobjects where xtype='U'");
}
});
this.add(outputArea,BorderLayout.CENTER); /* Hinzufuegen und Anordnen */
this.add(inputField,BorderLayout.NORTH); /* der Elemente des Applets */
this.add(p= new Panel(new GridLayout(8,1)), BorderLayout.WEST);
p.add(qu1);
p.add(qu2);
p.add(qu3);
p.add(qu4);
p.add(qu5);
p.add(qu6);
p.add(qu7);
p.add(qu8);
}
catch (Exception e) {e.printStackTrace();
}
String url = "jdbc:odbc:dbs"; /* Verbindungsaufbau mit dem DBMS */
String user = "erika";
String passwd = "mustermann";
try { /* probiere */
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); /* Brueckentreiber */
}
catch(java.lang.ClassNotFoundException ex) {
System.err.print("ClassNotFoundException: ");
System.err.println(ex.getMessage());
}
try { /* probiere */
con = DriverManager.getConnection(url, user, passwd); /* Verbindung */
}
catch(SQLException ex) {
outputArea.setText("SQLException: " + ex.getMessage());
}
}
void execQuery(String query) { /* SQL-Query an DBMS uergeben */
/* und Ergebnis in TextArea anzeigen */
try {
stmt = con.createStatement(); /* Statement-Objekt instantiieren */
ResultSet rs = stmt.executeQuery(query); /* Resultset holen */
int z = rs.getMetaData().getColumnCount();/* Zahl der Ergebnisspalten */
outputArea.setText("\n");
outputArea.setVisible(false);
for (int i=1;i<=z;i++) { /* alle Spaltennamen formatiert ausgeben */
String lab=rs.getMetaData().getColumnLabel(i);
outputArea.append(lab);
int y = rs.getMetaData().getColumnDisplaySize(i)+4;
for (int j=0;j<(y-lab.length());j++)
outputArea.append(" ");
}
outputArea.append("\n");
String arg; /* Inhalt der Ergebnismenge */
while(rs.next()) { /* wird zeilenweise formatiert */
outputArea.append("\n"); /* in der TextArea ausgegeben */
for (int i=1;i<=z;i++) {
arg=rs.getString(i);
int len;
if (arg != null) {
len=arg.length();
if(rs.getMetaData().getColumnName(i).equals("Geburtsdatum")) {
outputArea.append(arg.substring(0,10));
}
else{
outputArea.append(arg);
}
}
else {
len=4;
outputArea.append("null");
}
int y = rs.getMetaData().getColumnDisplaySize(i)+4;
for (int j=0;j<(y-len);j++) outputArea.append(" ");
}
}
outputArea.setVisible(true);
stmt.close();
}catch(SQLException ex) { /* Abfangen von SQL-Fehlermeldungen */
outputArea.setText("SQLException: " + ex.getMessage());
}
}
}