sql >> Database >  >> RDS >> Mysql

waarom zou ik de first()-methode kunnen gebruiken als mijn resultaatset-type alleen forward is?

Het standaardgedrag voor MySQL Connector/J is om de volledige inhoud van de ResultSet te laden in het geheugen zodra .executeQuery wordt genoemd. Dus hoewel onze ResultSet is TYPE_FORWARD_ONLY de MySQL JDBC-ontwikkelaars hebben blijkbaar besloten om "aardig" te zijn en ons toe te staan ​​.first te gebruiken , .absolute , etc. in dat geval (omdat de hele ResultSet is in het geheugen en direct beschikbaar), ook al zegt de JDBC-specificatie

Merk echter op dat als de gehele ResultSet is niet gegarandeerd in het geheugen, bijvoorbeeld als we st.setFetchSize(Integer.MIN_VALUE) gebruiken om de ResultSet te "streamen" als we er doorheen scrollen, laat MySQL Connector/J ons niets anders gebruiken dan .next of we krijgen

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



  1. Prestatieprobleem met MySQL MyISAM-tabel opnieuw bekeken

  2. Inzicht in de unieke beperkingen van SQL Server

  3. Hoe het verschil tussen twee datums in T-SQL te berekenen

  4. Syntaxisfout of toegangsfout:1059 ID-naam is te lang