Поведението по подразбиране за MySQL Connector/J е да зареди цялото съдържание на ResultSet
в паметта веднага щом .executeQuery
е наречен. Така че, въпреки че нашият ResultSet
е TYPE_FORWARD_ONLY
разработчиците на MySQL JDBC очевидно са решили да бъдат "добри" и да ни позволят да използваме .first
, .absolute
и т.н. в този случай (защото целият ResultSet
е в паметта и е лесно достъпен), въпреки че спецификацията на JDBC казва
Имайте предвид обаче, че ако целият ResultSet
не е гарантирано, че ще бъде в паметта, например, ако използваме st.setFetchSize(Integer.MIN_VALUE)
да "поточно" ResultSet
докато го превъртаме, MySQL Connector/J няма да ни позволи да използваме нищо друго освен .next
или ще получим
com.mysql.jdbc.OperationNotSupportedException: Operation not supported for streaming result sets