package moving; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MoveThroughResultSet { public static void main(String[] args) { try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection( "jdbc:postgresql:test", "postgres", "postgres"); Statement statement = con.createStatement(); ResultSet result = statement.executeQuery("SELECT * FROM employees"); // Einfaches Durchzählen der Datensätze mit einem // Counter int counter = 0; System.out.println("Iterating by ResultSet.next()"); while (result.next()) { counter++; System.out.println( "browsing through row " + result.getRow()); } System.out.println( "ResulSet contains " + counter + " rows / cursor now at row " + result.getRow() + "(getRow())/"); // Ist das ResultSet vom Typ "forward_only", kann man // jeden Datensatz nur einmal auswählen if (statement.getResultSetType() == ResultSet.TYPE_FORWARD_ONLY) { System.out.println( "You may have a Exception soon /" + " Type of ResultSet is 'forward_only'"); } // Mit absolute kann man ein bestimmte Reihe im // ResultSet auswählen System.out.println( "Iterating by ResultSet.absolute()"); for (int i = 1; i <= counter; i++) { result.absolute(i); System.out.println( "browsing through row " + result.getRow()); } // Versuchen wir mal rückwaerts durch das ResultSet // zu iterieren...nicht alle JDBC-Treiber // unterstützen dieses selten genutzte Feature try { System.out.println("Reversing fetch direction"); result.setFetchDirection(ResultSet.FETCH_REVERSE); // afterLast spult ans Ende des ResultSet result.afterLast(); while (result.next()) { System.out.println("Row " + result.getRow()); } } catch (Exception e) { System.out.println( "ResultSet.setFetchDirection() not " + "supported by JDBC driver"); } // Jetzt wollen wir nur durch jeden zweiten Datensatz // iterieren System.out.println( "Setting fetch size = 2, Iterating by next"); try { result.setFetchSize(2); // beforeFirst spult das ResultSet an den Anfang result.beforeFirst(); while (result.next()) { System.out.println( "browsing through row " + result.getRow()); } } catch (Exception e) { System.out.println( "ResultSet.setFetchSize() " + "not supported by JDBC driver"); } } catch (Exception e) { e.printStackTrace(); } } }