2015-09-23 49 views
1

執行語句時會發生什麼?它是否將所有行都檢索到內存中?哪些行存儲在Resultset中,以及如何將它們提取到java程序中?Resultset中的行存儲位置

更新

在調用resultSet.next();是否進入數據庫中取一singleRow回來Java端和顯示呢?和ResultSet已有cursor是否與數據庫cursor類似?

回答

1

一個常見的誤解是,ResultSet必須是容納查詢中所有行的某種容器,以便人們嘗試將它傳遞給應用程序,並且驚訝於在數據庫連接用於創建時它變爲無效它關閉。 ResultSet更像是一個數據庫遊標,它是用來從數據庫中取回行的東西。 ResultSet具有獲取大小,它向驅動程序建議一次可以從服務器獲取多少行,以便它可以檢索塊中的行並在需要時緩衝它們。

1

這是司機的具體情況。例如。 Postgres JDBC默認將所有行加載到內存中,Oracle使用服務器端的遊標並僅提取部分行。

+0

所以這意味着它的具體驅動程序 – eatSleepCode