Standardbeteendet för MySQL Connector/J är att ladda hela innehållet i ResultSet
i minnet så snart som .executeQuery
kallas. Så även om vårt ResultSet
är TYPE_FORWARD_ONLY
MySQL JDBC-utvecklarna bestämde sig tydligen för att vara "trevliga" och tillåta oss att använda .first
, .absolute
, etc. i så fall (eftersom hela ResultSet
finns i minnet och lätt tillgänglig), även om JDBC-specifikationen säger
Observera dock att om hela ResultSet
garanteras inte att finnas i minnet, t.ex. om vi använder st.setFetchSize(Integer.MIN_VALUE)
för att "strömma" ResultSet
när vi bläddrar igenom den låter MySQL Connector/J oss inte använda något annat än .next
eller så får vi
com.mysql.jdbc.OperationNotSupportedException: Operation not supported for streaming result sets