Mysql
 sql >> Base de données >  >> RDS >> Mysql

pourquoi je pourrais utiliser la méthode first() lorsque mon type de jeu de résultats est en avant uniquement ?

Le comportement par défaut pour MySQL Connector/J est de charger tout le contenu du ResultSet en mémoire dès que .executeQuery est appelé. Ainsi, même si notre ResultSet est TYPE_FORWARD_ONLY les développeurs MySQL JDBC ont apparemment décidé d'être "gentils" et de nous permettre d'utiliser .first , .absolute , etc. dans ce cas (parce que l'ensemble du ResultSet est en mémoire et facilement disponible), même si la spécification JDBC indique

Notez cependant que si l'ensemble du ResultSet n'est pas garanti d'être en mémoire, par exemple, si nous utilisons st.setFetchSize(Integer.MIN_VALUE) pour "diffuser" le ResultSet au fur et à mesure que nous le parcourons, MySQL Connector/J ne nous laissera utiliser que .next ou nous aurons

com.mysql.jdbc.OperationNotSupportedException: Operation not supported for streaming result sets