Hành vi mặc định cho MySQL Connector / J là tải toàn bộ nội dung của ResultSet
vào bộ nhớ ngay sau khi .executeQuery
được gọi là. Vì vậy, mặc dù ResultSet
của chúng tôi là TYPE_FORWARD_ONLY
các nhà phát triển MySQL JDBC dường như đã quyết định trở nên "tốt đẹp" và cho phép chúng tôi sử dụng .first
, .absolute
, v.v. trong trường hợp đó (vì toàn bộ ResultSet
có trong bộ nhớ và luôn sẵn sàng), mặc dù thông số JDBC cho biết
Tuy nhiên, lưu ý rằng nếu toàn bộ ResultSet
không được đảm bảo nằm trong bộ nhớ, ví dụ:nếu chúng tôi sử dụng st.setFetchSize(Integer.MIN_VALUE)
để "phát trực tiếp" ResultSet
khi chúng ta cuộn qua nó, thì MySQL Connector / J sẽ không cho phép chúng ta sử dụng bất cứ thứ gì ngoài .next
hoặc chúng tôi sẽ nhận được
com.mysql.jdbc.OperationNotSupportedException: Operation not supported for streaming result sets