Databases Reference
In-Depth Information
18.8
Kurz vor Schluss
Auch wenn wir die umfangreiche JDBC-API noch nicht erschöpfend behandelt
haben, kennen wir bereits ihre wichtigsten Eigenschaften. Aus den vielfältigen
Möglichkeiten, die JDBC bietet, seien noch einige erwähnt:
Scroll Cursor:
Objekte vom Typ
ResultSet
verwenden intern Cursor, die nur
um jeweils genau eine Position nach vorne bewegt werden können. Gelegentlich
möchten wir aber - aus welchen Gründen auch immer - den letzten Datensatz
der Ergebnismenge haben oder uns eine Position zurück in der Ergebnismenge
bewegen. Diesen Komfort bieten uns Scroll-Cursor, die unsere Objekte vom Typ
ResultSet
auch nutzen können, wenn wir den Bedarf beim Erzeugen des Ob-
jektes vom Typ
Statement
oder
PreparedStatement
anmelden:
Statement statement = con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
Unseren Cursor können wir jetzt auf eine beliebige Stelle im Ergebnis setzen. Im
folgenden Beispiel setzen wir ihn auf den vorletzten Datensatz:
String select = "select name from reihen";
ResultSet results = statement.executeQuery(select);
results.last();
results.previous();
Damit wir Scroll-Cursor überhaupt nutzen können, muss unser RDBMS sie auch
unterstützen. Außerdem bekommen wir diesen Komfort nicht kostenlos: Scroll-
Cursor sind ressourcenintensiver. Weil die vollständige Ergebnismenge sofort be-
kannt sein muss, geben uns Scroll-Cursor auch nur eine Momentaufnahme des
Datenbestandes. Die Daten sind möglicherweise nicht mehr aktuell, wenn unsere
Java-Anwendung sie bekommt.
Large Objects:
Wenn wir eine Tabelle mit der Anweisung
create table pictures(
id int primary key,
image blob
)
anlegen, dann stellen uns die meisten RDBMS keine Möglichkeit zur Verfü-
gung, um mit einer einfachen
insert
-Anweisung Bilder in Form von Blobs
(siehe Abschnitt 5.16) in die Tabelle einzufügen. In JDBC bietet der Typ
PreparedStatement
die Methode
setBinaryStream
, der wir einen Stream
übergeben können, der eine Datei referenziert. Beim Einfügen des Datensatzes
werden die Daten dann aus der Datei gelesen und die Tabelle transportiert.