JDBC Datenbanktechnologien Prof. Dr. Ingo Claÿen Hochschule für Technik und Wirtschaft Berlin Eclipse / Protokollierung Treiber / Datenbankverbindung Eclipse / Protokollierung Aufbau Eclipse-Projekt JDBC Ingo Claÿen 2/11 Eclipse / Protokollierung Protokollierung mit Ausgabe-Anweisungen I I Einfach Ausgabe-Anweisungen im Programmcode (println) Nachteile I Ausgabemedium festgelegt I Keine Unterscheidung bzgl. Grade der Fehler I Kein einfaches An- und Ausschalten JDBC Ingo Claÿen 3/11 Eclipse / Protokollierung Protokollierung mit log4j Spezielles Objekt L, das für die Protokollierung zuständig ist. Konguration in log4j.properties Zeile 1 Zeile 3 Zeile 4, 5 Zeile 7 Zeile 8, 9 JDBC Ingo Claÿen Allgemeine Einstellung: Warnings und Ausgabe auf Konsole Einstellung de.htwberlin.main auf Stufe warn Einstellung de.htwberlin.utils und test auf Stufe info Ausgabemedium Konsole Format der Ausgabe 4/11 Treiber / Datenbankverbindung Laden des Datenbank-Treibers Name der Treiber-Klasse für die Oracle-Datenbank Class.forName lädt Java-Bibiliothek zur Laufzeit JDBC Ingo Claÿen 5/11 Treiber / Datenbankverbindung Herstellen einer Verbindung Verbindungsparameter Verbindungsaufbau JDBC Ingo Claÿen 6/11 Treiber / Datenbankverbindung Einfügen eines Datensatzes Verbindung wird als Parameter übergeben I I I SQL-Anweisung als String-Variable Wenn zu lang für eine Zeile, in Teilstrings aufsplitten Achtung: Leerzeichen am Ende der Zeile ...anzahlsitze)<hier Leerzeichen> I I Erzeugung SQL-Anweisung: s = c.createStatement() Ausführung: s.executeUpdate(sql) JDBC Ingo Claÿen 7/11 Treiber / Datenbankverbindung Exception-Klasse ServiceException Eigene Exception-Klasse I I Erweitert RuntimeException Wird ausgelöst, wenn der eigene Code bei Überprüfungen auf Fehlersituationen trit. JDBC Ingo Claÿen 8/11 Treiber / Datenbankverbindung Lesen eines Datensatzes PreparedStatement für Abfragen mit Parameter I Setzen des Parameters: ps.setInt(1, rid) enthält Ergebnismenge, rs = ps.executeQuery() Steht zu Anfang vor dem ersten Datensatz Weiterschaltung mit rs.next() und Prüfung, ob (noch) ein Datensatz vorhanden ist Löst ServiceException aus, wenn Raum (rid) nicht in DB ist I ResultSet rs I I I JDBC Ingo Claÿen 9/11 Treiber / Datenbankverbindung Domain-Klasse Raum Für die Umwandlung von Datensätzen in Java-Objekte JDBC Ingo Claÿen 10/11 Treiber / Datenbankverbindung Lesen eines Datensatzes und Erzeugung Java-Objekt I Erzeugung Raum-Objekt und Befüllung mit Werten aus dem Datensatz JDBC Ingo Claÿen 11/11