sql >> Database teknologi >  >> RDS >> Mysql

hvorfor kunne jeg bruge first()-metoden, når min resultatsættype kun er fremadrettet?

Standardadfærden for MySQL Connector/J er at indlæse hele indholdet af ResultSet ind i hukommelsen, så snart .executeQuery Hedder. Så selvom vores ResultSet er TYPE_FORWARD_ONLY MySQL JDBC-udviklerne besluttede tilsyneladende at være "pæne" og tillade os at bruge .first , .absolute osv. i det tilfælde (fordi hele ResultSet er i hukommelsen og er let tilgængelig), selvom JDBC-specifikationen siger

Bemærk dog, at hvis hele ResultSet er ikke garanteret i hukommelsen, hvis vi f.eks. bruger st.setFetchSize(Integer.MIN_VALUE) for at "streame" ResultSet mens vi ruller gennem det, så vil MySQL Connector/J ikke lade os bruge andet end .next eller vi får

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



  1. Databaseforbindelsesproblem stødt på ved brug af d2rq

  2. Sådan viser du tabel fremmednøgler

  3. ODBC 4.0

  4. Læs/skriv opdelinger ved hjælp af Zend_Db