JDBC基礎 setFetchSize方法

2022-07-04 03:09:14 字數 988 閱讀 4974

在statement和resultset介面中都有setfetchsize方法

void setfetchsize(int rows)

throws sqlexception

檢視api文件

statement介面中是這樣解釋的:

為 jdbc 驅動程式提供乙個提示,它提示此statement生成的resultset物件需要更多行時應該從資料庫獲取的行數。指定的行數僅影響使用此語句建立的結果集合。如果指定的值為 0,則忽略該提示。預設值為 0。

resultset中是這樣解釋的:

為 jdbc 驅動程式設定此resultset物件需要更多行時應該從資料庫獲取的行數。如果指定的獲取大小為零,則 jdbc 驅動程式忽略該值,隨意對獲取大小作出它自己的最佳猜測。預設值由建立結果集的statement物件設定。獲取大小可以在任何時間更改。

網上有下面這樣的一段摘錄1:

預設時,驅動程式一次從查詢裡獲取所有的結果。這樣可能對於大的資料集來說是不方便的, 因此jdbc 驅動提供了乙個用於設定從乙個資料庫游標抽取若干行的 resultset 的方法。在連線的客戶端這邊緩衝了一小部分資料行,並且在用盡之後, 則通過重定位游標檢索下乙個資料行塊。

摘錄2:

setfetchsize最主要是為了減少網路互動次數設計的。訪問resultset時,如果它每次只從伺服器上取一行資料,則會產生大量的開銷。setfetchsize的意思是當呼叫rs.next時,resultset會一次性從伺服器上取得多少行資料回來,這樣在下次rs.next時,它可以直接從記憶體中獲取出資料而不需要網路互動,提高了效率。 這個設定可能會被某些jdbc驅動忽略的,而且設定過大也會造成記憶體的上公升。

另外在《best practices to improve performance in jdbc》一文中也提及該方法的使用用於提高查詢效率,有名詞將之成為batch retrieval

jdbc基礎連線(基礎)

public static void main string args throws sqlexception,classnotfoundexception 1 oracle8 8i 9i資料庫 thin模式 class.forname oracle.jdbc.driver.oracledriver...

JDBC基礎和JDBC的事物

開始 註冊驅動 class.forname com.mysql.jdbc.driver mysql的註冊驅動方式 jdbc執行sql 語句的兩種方式 方式一 這種有sql注入的風險,建議不要使用 statement stat con.createstatement 查詢 stat.executequ...

JDBC基礎例項

實現此案例需要按照如下步驟進行。步驟一 匯入連線oracle資料庫所需的jar包 建立工程,在當前工程下匯入連線oracle資料庫對應的驅動程式jar包。步驟二 新建類empdao及方法findall 如下所示 public class empdao public void findall 步驟三 ...