Mysql
 sql >> база данни >  >> RDS >> Mysql

защо мога да използвам метода first(), когато моят тип набор от резултати е само напред?

Поведението по подразбиране за MySQL Connector/J е да зареди цялото съдържание на ResultSet в паметта веднага щом .executeQuery е наречен. Така че, въпреки че нашият ResultSet е TYPE_FORWARD_ONLY разработчиците на MySQL JDBC очевидно са решили да бъдат "добри" и да ни позволят да използваме .first , .absolute и т.н. в този случай (защото целият ResultSet е в паметта и е лесно достъпен), въпреки че спецификацията на JDBC казва

Имайте предвид обаче, че ако целият ResultSet не е гарантирано, че ще бъде в паметта, например, ако използваме st.setFetchSize(Integer.MIN_VALUE) да "поточно" ResultSet докато го превъртаме, MySQL Connector/J няма да ни позволи да използваме нищо друго освен .next или ще получим

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да избирате имена на колони динамично в mySQL

  2. изберете всички колони, които не са в друга таблица laravel 5.5

  3. C#/NHibernate - Вземете първите 10 записа, подредени по групирана сума

  4. PHP MySQL - За всеки 6 реда вмъкнете div?

  5. Въпрос на изявление на MYSQL if