sql >> Databáze >  >> RDS >> Mysql

proč bych mohl použít metodu first(), když můj typ sady výsledků je pouze dopředný?

Výchozí chování pro MySQL Connector/J je načíst celý obsah ResultSet do paměti, jakmile .executeQuery je nazýván. Tedy, i když naše ResultSet je TYPE_FORWARD_ONLY vývojáři MySQL JDBC se zjevně rozhodli být "milí" a dovolili nám používat .first , .absolute , atd. v takovém případě (protože celá ResultSet je v paměti a je snadno dostupný), i když specifikace JDBC říká

Pamatujte však, že pokud je celá ResultSet není zaručeno, že bude v paměti, např. pokud použijeme st.setFetchSize(Integer.MIN_VALUE) pro "streamování" ResultSet když v něm procházíme, MySQL Connector/J nám nedovolí použít nic jiného než .next nebo dostaneme

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



  1. Vytvořte spouštěč pro smazání řádků, které jsou starší než 90 dní

  2. Získejte aktualizovanou hodnotu v MySQL namísto ovlivněných řádků

  3. Přehled různých uzlů pomocného plánu v PostgreSQL

  4. Bitové operace MySQL, Bloomův filtr