Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

por que eu poderia usar o método first() quando meu tipo de conjunto de resultados é apenas para frente?


O comportamento padrão do MySQL Connector/J é carregar todo o conteúdo do ResultSet na memória assim que .executeQuery é chamado. Portanto, mesmo que nosso ResultSet é TYPE_FORWARD_ONLY os desenvolvedores do MySQL JDBC aparentemente decidiram ser "legais" e nos permitir usar .first , .absolute , etc. nesse caso (porque todo o ResultSet está na memória e prontamente disponível), embora a especificação JDBC diga

Observe, no entanto, que se todo o ResultSet não é garantido que esteja na memória, por exemplo, se usarmos st.setFetchSize(Integer.MIN_VALUE) para "transmitir" o ResultSet à medida que rolamos por ele, o MySQL Connector/J não nos permitirá usar nada além de .next ou vamos conseguir
com.mysql.jdbc.OperationNotSupportedException: Operation not supported for streaming result sets