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