sql >> Databasteknik >  >> RDS >> Mysql

varför skulle jag kunna använda metoden first() när min resultatuppsättningstyp endast är framåt?

Standardbeteendet för MySQL Connector/J är att ladda hela innehållet i ResultSet i minnet så snart som .executeQuery kallas. Så även om vårt ResultSet är TYPE_FORWARD_ONLY MySQL JDBC-utvecklarna bestämde sig tydligen för att vara "trevliga" och tillåta oss att använda .first , .absolute , etc. i så fall (eftersom hela ResultSet finns i minnet och lätt tillgänglig), även om JDBC-specifikationen säger

Observera dock att om hela ResultSet garanteras inte att finnas i minnet, t.ex. om vi använder st.setFetchSize(Integer.MIN_VALUE) för att "strömma" ResultSet när vi bläddrar igenom den låter MySQL Connector/J oss inte använda något annat än .next eller så får vi

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



  1. Kan jag automatiskt skapa en tabell i PostgreSQL från en csv-fil med rubriker?

  2. Hur visar man de sekundära posterna i datatabellens underordnade rad med respektive id?

  3. Din ultimata guide till SQL Joins:OUTER JOIN – Del 2

  4. PDO-stöd för flera frågor (PDO_MYSQL, PDO_MYSQLND)