正確使用MySQL JDBC遊標

壹頁書發表於2017-07-07
轉載自:
http://blog.csdn.net/seven_3306/article/details/9303879



該文章提出三種方式可以正確使用mysql 遊標

1、當statement設定以下屬性時,採用的是流資料接收方式,每次只從伺服器接收部份資料,直到所有資料處理完畢,不會發生JVM OOM。


          setResultSetType(ResultSet.TYPE_FORWARD_ONLY);

          setFetchSize(Integer.MIN_VALUE);

2、呼叫statement的enableStreamingResults方法,實際上enableStreamingResults方法內部封裝的就是第1種方式。

3、設定連線屬性useCursorFetch=true (5.0版驅動開始支援),statement以TYPE_FORWARD_ONLY開啟,再設定fetch size引數,表示採用伺服器端遊標,每次從伺服器取fetch_size條資料。

但是實測,只有第一種,第二種方式可以,第三種方式不成功.

測試的MySQL JDBC版本 5.1.31

第三種方式,報錯,總之,只要有useCursorFetch的引數設定,就會報如下異常.
Prepared statement needs to be re-prepared



第二種方式 成功
將PreparedStatemen強轉為com.mysql.jdbc.PreparedStatement,然後執行enableStreamingResults函式.
注意不要設定fetchsize 否則沒有效果



第一種方式  成功

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2141693/,如需轉載,請註明出處,否則將追究法律責任。

相關文章