Databases Reference
In-Depth Information
holen. Dieses Statement-Objekt kann u. a. zur Ausführung von
Anfragen genutzt werden. Der zugehörige Aufruf lautet
ResultSet rs=stmt.executeQuery(anfrage);
Dabei muss anfrage vom Typ String sein. Dieser String sieht
dann genauso aus, wie es bei der Erstellung von SQL-Anfragen
diskutiert wurde. Da man Strings mit Stringoperationen flexibel
zusammensetzen kann, können hier Anfragen aus Parametern
zusammengesetzt werden. Der große Nachteil dieses Ansatzes
ist, dass die Korrektheit der Anfrage erst bei der Ausführung
des Programms festgestellt werden kann.
Das Ergebnis der Anfrage ist ein Objekt vom Typ ResultSet, das
eng verwandt mit den im vorherigen Kapitel vorgestellten
Cursorn ist. Wieder kann das Ergebnis zeilenweise durchlaufen
und verarbeitet werden.
Zur Analyse der grundsätzlichen Eigenschaften des ResultSets
stehen wieder Metadaten zur Verfügung, die man mit
Anfrageergebnis:
ResultSet
ResultSetMetaData rsmd= rs.getMetaData();
erhält. Man kann diese Metadaten u. a. danach befragen, aus
wie vielen Spalten das Ergebnis besteht, welchen Typ und wel-
chen Namen diese Spalten haben. Es ist standardmäßig nicht
vorgesehen, dass man die Anzahl der berechneten Zeilen er-
hält, was aber auf später vorgestellten Umwegen möglich wird.
Dieser Ansatz wird hier erwähnt, um den Lesern die Versu-
chung zu ersparen, das gesamte Anfrageergebnis in einem Ar-
ray zu speichern. Dies sollte vermieden werden, da es häufig
dazu führt, dass datenbankunerfahrene Entwickler die Funkti-
onalität der Datenbank erneut für diese Arrays implementieren.
So werden z. B. alle Tier-Informationen gelesen und dann das
Array nach Bären durchsucht, statt dieses sofort in die SQL-
Anfrage zu schreiben.
Das ResultSet wird wie ein Iterator durchlaufen, dabei springt
das ResultSet mit rs.next() zur nächsten Zeile. Der Aufruf
rs.next() muss am Anfang einmal erfolgen, damit die erste Zeile
eingelesen wird. Wenn keine Zeile mehr eingelesen wurde, lie-
fert der Aufruf rs.next() den Wert false, ansonsten true zurück.
Um auf die Inhalte der Spalten der aktuellen ResultSet-Zeile
zugreifen zu können, stehen verschiedene get-Methoden zur
Verfügung. Jede dieser Methoden benötigt als Parameter ent-
weder die Spaltennummer oder den Namen der Spalte. Bei den
Spaltennummern ist zu beachten, dass die Nummerierung mit
nie alle Daten
zur Verarbei-
tung aus der Da-
tenbank lesen
288
Search WWH ::




Custom Search