// An applet that accesses a Postgres database server across the network import java.sql.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class StudieApplet extends Applet { TextField stdnrInd = new TextField(15); TextField kurnrInd = new TextField(10); TextField karInd = new TextField(10); TextArea ud = new TextArea(4, 40); Button tilfoej = new Button("Tilføj"); Button soeg = new Button("Vis kursus"); Connection db; // The connection to the database Statement st; // A statement to run queries with public void init() { add(new Label("Studienummer")); add(stdnrInd); add(new Label("Kursusnummer")); add(kurnrInd); add(new Label("Karakter")); add(karInd); add(tilfoej); tilfoej.addActionListener(new TilfoejLytter()); add(soeg); soeg.addActionListener(new SoegLytter()); add(ud); String url = "jdbc:postgresql://ellemose.dina.kvl.dk/gp"; String usr = "gp"; String pwd = "e2000"; try { Class.forName("postgresql.Driver"); db = DriverManager.getConnection(url, usr, pwd); st = db.createStatement(); } catch (Exception e) { ud.append("Kan ikke åbne databasen: "+ e.getMessage()); } } // Denne metode kaldes når appletten ikke bliver brugt mere. public void destroy() { try { st.close(); db.close(); } catch (SQLException e) { ud.setText("Kan ikke lukke databasen: " + e.getMessage()); } } class TilfoejLytter implements ActionListener { public void actionPerformed(ActionEvent e) { addToDatabase(stdnrInd.getText(), Integer.parseInt(kurnrInd.getText()), Integer.parseInt(karInd.getText())); } } class SoegLytter implements ActionListener { public void actionPerformed(ActionEvent e) { searchDatabase(Integer.parseInt(kurnrInd.getText())); } } void addToDatabase(String stdnr, int kurnr, int kar) { try { String query = "INSERT INTO eksamen VALUES ( "; query += "'" + stdnr + "'"; query += ", " + kurnr; query += ", " + kar; query += ")"; ud.append(query + "\n"); st.execute(query); } catch (SQLException e) { ud.append("Databaseopdatering gik galt: " + e.getMessage()); } } void searchDatabase(int kurnr) { try { String query = "select fornavn, efternavn, karakter" + " from eksamen, student" + " where eksamen.studienummer = student.studienummer" + " and eksamen.kursusnummer = " + kurnr + " order by fornavn, efternavn"; st.execute(query); ResultSet rs = st.getResultSet(); ud.setText(""); while (rs.next()) { String enavn = rs.getString("efternavn"); String fnavn = rs.getString("fornavn"); int kar = rs.getInt("karakter"); ud.append(fnavn + " " + enavn + " fik " + kar + "\n"); } } catch (SQLException e) { ud.append("Databasesøgning gik galt: "+ e.getMessage()); } } }