Datenbank-Client-Programm (Ganzer SQL-Befehl) 9 Datenbank-Client-Programm (Ganzer SQL-Befehl) Interaktive Datenbakoberflächen, die vollständige SQL-Befehle aufnehmen, sind nichts anderes als Anwendungsprogramme, die auf die beiden o.g. Befehlstypen reagieren müssen. Entweder: - Abschicken des SQL-Befehls an die Datenbank (select) Empfang der Ergebnisse Oder: - Nur abschicken des SQL-Befehls an die Datenbank (insert, update usw.) import java.sql.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.regex.*; public class sqlbefehl extends Frame { Button ausführen = new Button ("Ausführen"); TextArea ein = new TextArea(); TextArea aus = new TextArea(); Panel eingabe = new Panel(new GridLayout(0,2)); Statement s; Connection c; public sqlbefehl () { super("SQL-Befehl"); add("Center",eingabe); eingabe.add(new Label("SQL-Befehl")); eingabe.add(ein); eingabe.add(new Label("Ergebnis")); eingabe.add(aus); eingabe.add(ausführen); setSize(400,250); setVisible(true); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); c = DriverManager.getConnection("jdbc:odbc:accessdb", "", ""); s = c.createStatement(); } catch (Exception ex) {ex.printStackTrace();} addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }}); ausführen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tue(); }});} private void tue() { String sql = ein.getText(); Pattern p = Pattern.compile("select"); Matcher m = p.matcher(sql); TFH Berlin/Steyer Datenbank-Client-Programm (Ganzer SQL-Befehl) if (m.find()) try // aus.setText("select gefunden"); { ResultSet rs = s.executeQuery(sql); ResultSetMetaData rm = rs.getMetaData(); int x = rm.getColumnCount(); aus.setText(""); for (int i=1; i<=x; i++) { aus.append (rm.getColumnName(i)); if (i != x) aus.append (", "); else aus.append("\n"); } while (rs.next()) { for (int i=1; i<=x; i++) { aus.append (rs.getString(i)); if (i != x) aus.append (", "); else aus.append("\n"); } } } catch (Exception ex) {ex.printStackTrace();} else try { // aus.setText("select nicht gefunden"); s.executeUpdate(sql); } catch (Exception ex) {ex.printStackTrace();} }; public static void main (String[] args) { new sqlbefehl(); } } TFH Berlin/Steyer