Wie kann man nun Apache Derby aus einem Plugin ansprechen? Als erste muss man das Derby Plugin zu den Abhängigkeiten seines Plugins hinzufügen.
Dann kann man auch schon von seinem Code auf Apache Derby zugreifen. Der folgende Code erstellt eine Datenbank mit dem Namen testDB mit einer Mitarbeitertabelle die mit ein paar Namen befüllt wird. Nachher kommt ein Query auf die neu erstellten Daten das Ergebnis wird in eine Messagebox ausgegeben. Natürlich nicht sehr sinnvoll, aber es zeigt alle notwendigen Befehle die man für die Verwendung von Derby braucht. Natürlich wird man die Initialisierung und Erstellung der Datenbank in eine eigenes Plugin auslagern, aus denen sich dann alle Plugins die Derby verwenden wollen die Connection holen. Ebenso sollte man die stmt.execute in einer Echtanwendung durch PreparedStatements ersetzen.
try { // Derby Datenbankverzeichnis in das Datenverzeichnis des Plugins // legen. // Dies sollte natürlich immer das gleiche sein und am besten in ein // Initialisierungsplugin verlegt werden. System.setProperty("derby.system.home", Activator.getDefault() .getStateLocation().toFile().getAbsolutePath()); // Treiber für Apache Derby laden. Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); // Eine Konnection zu Apache Derby erstellen und bei Bedarf die // Datenbank testDB erstellen. Connection con = DriverManager .getConnection("jdbc:derby:testDB;create=true"); // Ein SQLStatement Objekt erstellen. Statement stmt = con.createStatement(); // Eine Tabelle in der Datenbank erstellen. stmt.execute("create table mitarbeiter (name1 varchar(30), name2 varchar(30), department varchar(30))"); // Ein paar Sätze hinzufügen. stmt.execute("insert into mitarbeiter values('Ralf','Petter','IT')"); stmt.execute("insert into mitarbeiter values('Max', 'Mustermann','IT')"); stmt.execute("insert into mitarbeiter values('Lieschen', 'Müller','Sales')"); // Ein Query auf die Datenbank absetzen. ResultSet rs = stmt .executeQuery("Select * from mitarbeiter where department='IT'"); // Ergebnis verarbeiten und als Messagebox anzeigen. StringBuilder result = new StringBuilder(); while (rs.next()) { result.append((rs.getString("name1").trim() + " " + rs.getString("name2").trim() + "\n")); } MessageBox box = new MessageBox(PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getShell()); box.setMessage(result.toString()); box.open(); // Mitarbeiter Tabelle wieder löschen. stmt.execute("Drop table mitarbeiter"); // Derby wieder herunterfahren. DriverManager.getConnection("jdbc:derby:;shutdown=true"); } catch (Exception e) { e.printStackTrace(); }
Eine SQL Datenbank kann in vielen Projekten sehr nützlich sein und mit dem Notesclient hat man eine sehr leistungsfähige immer bei der Hand.