Het standaardgedrag voor MySQL Connector/J is om de volledige inhoud van de ResultSet te laden in het geheugen zodra .executeQuery wordt genoemd. Dus hoewel onze ResultSet is TYPE_FORWARD_ONLY de MySQL JDBC-ontwikkelaars hebben blijkbaar besloten om "aardig" te zijn en ons toe te staan .first te gebruiken , .absolute , etc. in dat geval (omdat de hele ResultSet is in het geheugen en direct beschikbaar), ook al zegt de JDBC-specificatie
Merk echter op dat als de gehele ResultSet is niet gegarandeerd in het geheugen, bijvoorbeeld als we st.setFetchSize(Integer.MIN_VALUE) gebruiken om de ResultSet te "streamen" als we er doorheen scrollen, laat MySQL Connector/J ons niets anders gebruiken dan .next of we krijgen
com.mysql.jdbc.OperationNotSupportedException: Operation not supported for streaming result sets