sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué podría usar el método first () cuando mi tipo de conjunto de resultados es solo de avance?

El comportamiento predeterminado para MySQL Connector/J es cargar todo el contenido del ResultSet en la memoria tan pronto como .executeQuery se llama. Entonces, aunque nuestro ResultSet es TYPE_FORWARD_ONLY los desarrolladores de MySQL JDBC aparentemente decidieron ser "amables" y permitirnos usar .first , .absolute , etc. en ese caso (porque todo el ResultSet está en la memoria y fácilmente disponible), aunque la especificación JDBC dice

Tenga en cuenta, sin embargo, que si todo el ResultSet no se garantiza que esté en la memoria, por ejemplo, si usamos st.setFetchSize(Integer.MIN_VALUE) para "transmitir" el ResultSet a medida que nos desplazamos por él, MySQL Connector/J no nos permitirá usar nada más que .next o lo conseguiremos

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