Die Ermittlung der Gesamttrefferzahl einer Abfrage kann man auf drei Arten durchführen, abhängig
von der verfügbaren JDBC-Version. Die
einfachste, mit allen JDBC-Varianten kompatible
Möglichkeit besteht darin, zunächst eine Abfrage auszuführen,
in der nur die Anzahl der Treffer ermittelt wird.
Anschließend werden in einer zweiten Anfrage die Daten selektiert:
...
Statement stmt = con.creatStatement();
// 1. Abfrage: Anzahl Zeilen ermitteln
ResultSet rs = stmt.executeQuery(
"SELECT count(*) FROM titel");
rs.next();
long zeilen = rs.getLong(1);
rs.close();
// 2. Abfrage: Daten-Ausschnitt ausgeben
rs = stmt.executeQuery("SELECT * FROM titel t ORDER BY t.titel");
// Zugriff auf die Daten
...
Bei
der zweiten Alternative werden die Positionierungs-Funktionen von JDBC-2.0 verwendet.
Hierbei muss man den Cursor zunächst mit der Methode last()
auf den letzten Datensatz positionieren und
anschließend über die Methode getRow()
die Nummer der Zeile in der Ergebnismenge ermitteln.
Über die Methode first() kann das
ResultSet anschließend wieder auf den ersten Satz positioniert werden:
// Initialisierung des Statement-Objekts
Statement stmt;
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("SELECT * FROM titel t ORDER BY t.titel");
// Positionierung auf den letzten Satz und Abfrage der Zeilen
rs.last();
long zeilen = rs.getRow());
// Erneute Positionierung auf den ersten Satz
rs.first();
// Zugriff auf die Daten
...
Als Typ der Ergebnismenge wurde TYPE_SCROLL_INSENSITIVE gewählt, da eine
Positionierung für die Ermittlung der Zeilenanzahl möglich sein muss.