Tipps zu JDBC-Programmen

Werbung
Tipps zu JDBC-Programmen
Grundsätzliches
1. Importieren von java.sql.*, meist auch java.io.*
2. Programmierung der main-Methode mit Abfangen aller Exceptions und Ausgabe
der Exception-Meldungen. In der main-Methode wird der Konstruktor der Klasse
mit new aufgerufen.
3. Im Konstruktor: Laden des JDBC-Treibers und Herstellen der Verbindung oder Aufruf einer Methode der (b.i.b.-spezifischen) Klasse DabVerbindung
4. Herstellen eines Statement-Objekts. Dieses kann immer wieder verwendet werden,
so lange nicht mehrere Statements gleichzeitig benötigt werden.
Bausteine
Einlesen eines Wertes mit Prompt
Verwenden der Methoden LiesString() bzw. LiesInteger(), ggf. Entwicklung weitere
Methoden speziell für Datumswerte bei Bedarf. Rückgabewert auf NULL prüfen, um
Leereingaben von Werteeingaben unterscheiden zu können.
Alternativ kann man auch ein BufferedReader-Objekt aus einem InputStreamReader erstellen, der mit System.in initialisiert wurde. Aus diesem BufferedReader-Objekt kann
immer wieder von der Tastatur gelesen werden.
Abfragen von Werten aus der Datenbank
1. Zusammenbauen des SELECT-Kommandos. Dabei darauf achten, dass Zeichenketten und Datumswerte bei SQL in Hochkommas eingeschlossen werden – wichtig
z. B. bei WHERE-Klauseln. Das Kommando kann beliebig komplex sein; das vereinfacht auf der anderen Seite das Java-Programm. Vermeiden Sie, mehrere Ergebnisse hintereinander abzufragen und diese dann im Java-Programm miteinander zu
verknüpfen. Es ist immer problematisch, wenn man Ergebnisse von verschiedenen
Zeitpunkten miteinander verbindet.
2. Während der Entwicklung das fertige Kommando zur Kontrolle anzeigen!
3. Ausführen in einem try-Block mit Hilfe der Methode executeQuery() des Statement-Objekts. Rückgabewert ist ein Objekt vom Typ ResultSet, also eine Ergebnismenge. Im zugehörigen catch SQL-Exceptions abfangen und den Fehler behandeln, auf jeden Fall während der Entwicklung die Original-Fehlermeldung anzeigen.
4. Mit Hilfe einer while-Schleife nach und nach alle Tupel der Ergebnismenge vom
Server abholen durch Aufruf der next()-Methode des ResultSet-Objekts. Aus den
geholten Tupeln mit get...()-Aufrufen des ResultSet-Objekts die einzelnen Attributwerte abfragen. Die Attribute sind von 1 bis n durchnummeriert, können aber
auch durch die Spaltennamen abgefragt werden.
5. Wird nur ein einziges Tupel erfragt – z. B. durch Verwendung einer Aggregatfunktion wie count(*) ohne GROUP BY oder durch Erfragen eines Tupels über seinen
Primärschlüssel –, dann sollte statt while natürlich nur ein if verwendet werden.
6. Schließen der Ergebnismenge durch die Methode close() des ResultSet-Objekts
nicht vergessen. Dieselbe ResultSet-Variable kann in der nächsten Abfrage erneut
verwendet werden. Es besteht keine Notwendigkeit, mehrere ResultSet-Objekte
zu haben, so lange die Abfragen nacheinander durchgeführt werden.
Holger Jakobs, [email protected], Tipps-JDBC-Programme.odt, 2008-12-03
Seite 1 von 2
Tipps zu JDBC-Programmen
Einfügen von Tupeln in die Datenbank
1. Zusammenbauen des INSERT-Kommandos. Dabei darauf achten, dass Zeichenketten und Datumswerte bei SQL in Hochkommas eingeschlossen werden.
2. Will oder kann man nicht alle Attribute füllen, sondern die default-Werte verwenden, so gehört zwischen den Tabellennamen und das Schlüsselwort values eine in
Klammern eingeschlossene Liste der Attribute. Die Reihenfolge darf von der in der
Tabelle abweichen, muss aber mit der Reihenfolge der Werte hinter values übereinstimmen.
3. Bei Datumswerten auf die JDBC-Escape-Schreibweise achten: {d '2008-11-11'}
4. Während der Entwicklung das fertige Kommando zur Kontrolle anzeigen!
5. Ausführen in einem try-Block mit Hilfe der Methode executeUpdate() des Statement-Objekts. Rückgabewert ist ein einfacher int-Wert, der angibt, wie viele Tupel
vom Kommando betroffen sind – wenn das INSERT erfolgreich war, also 1. Im zugehörigen catch SQL-Exceptions abfangen und den Fehler behandeln, auf jeden Fall
während der Entwicklung die Original-Fehlermeldung anzeigen.
6. Immer mit Fehlern rechnen, z. B. Primärschlüssel war schon vorhanden, zugehörige Fremdschlüsselwert existiert nicht, unberechtigtes Einfügen in die Tabelle,
Wert außerhalb eines zulässigen Bereiches usw.
Ändern von Werten in der Datenbank
1. Zusammenbauen des UPDATE-Kommandos. Dabei darauf achten, dass Zeichenketten und Datumswerte bei SQL in Hochkommas eingeschlossen werden. Es dürfen
beliebig viele Werte in beliebig vielen Tupeln auf einmal verändert werden. Achtung: Ohne WHERE-Klausel werden die Werte in allen Tupeln verändert!
2. Alles weitere siehe oben unter „Einfügen von Tupeln in die Datenbank“ ab Punkt 3
3. Hier können weitere Fehlerarten auftreten, z. B. Wert kann wegen Fremdschlüssel-Abhängigkeit nicht verändert werden.
Löschen von Tupeln aus der Datenbank
1. Zusammenbauen des DELETE-Kommandos. Dabei darauf achten, dass Zeichenketten und Datumswerte in SQL in Hochkommas eingeschlossen werden. Es dürfen
beliebig viele Tupel auf einmal gelöscht werden. Achtung: Ohne WHERE-Klausel werden alle Tupel gelöscht!
2. Alles weitere siehe oben unter „Einfügen von Tupeln in die Datenbank“ ab Punkt 3
3. Hier können weitere Fehlerarten auftreten, z. B. Tupel kann wegen Fremdschlüssel-Abhängigkeit nicht gelöscht werden.
Allgemeiner Hinweis
Geben Sie Ihren CONSTRAINTs – insbesondere den Fremdschlüssel-Constraints – sprechende Namen, damit Sie auch bei Oracle genau wissen, was einen Fehler verursacht. PostgreSQL vergibt von selbst gute, sprechende Namen, Oracle nummeriert sie nur durch, so
dass ohne Herumsuchen mit dem Schema-Browser eine Zuordnung schwierig ist.
Holger Jakobs, [email protected], Tipps-JDBC-Programme.odt, 2008-12-03
Seite 2 von 2
Herunterladen