JDBC用ResultSet訪問大量資料時會遇到的問題
我們經常需要JDBC來對資料庫就行操作,一般流程為連線資料庫、通過sql語句把需要的資料取出來儲存到ResultSet,然後呼叫ResultSet方法的類似 getString,getInt()等方法來取出ResultSet中的資料。當資料量比較小的時候,這種訪問方式可以正常執行。但是當資料量很大的時候,在對ResultSet中的部分資料完成訪問後會丟擲異常(JDBC遊標超過限制出現ORA-01000 )。
出現該問題的可能原因如下:
1、java程式碼在執行createStatement和prepareStatement的時候,實際上都是相當與資料庫中開啟了一個cursor,尤其是如果createStatement和prepareStatement在迴圈內部的話,一直使用不關閉非常容易出錯。
2、使用getString函式的執行方式:程式會一次性把資料都放到記憶體裡,然後通過呼叫ResultSet的next、getString等方法取資料,當資料量太大導致記憶體放不下的時候這種方式就會報錯。因此可以改用getObject方法來訪問ResultSet,然後把訪問到的Object再轉換成指定的型別(getObject的執行模式:資料不一次性全部讀入記憶體,而是存在與資料庫中,每次呼叫getObject都是直接從資料庫中取資料,因此可以正常執行)
相關文章
- 用JDBC訪問一個資料庫JDBC資料庫
- JDBC資料庫訪問JDBC資料庫
- 查詢資料庫後是返回ResultSet實現中遇到的問題資料庫
- 用JDBC訪問一個資料庫(轉)JDBC資料庫
- JDBC訪問資料庫的步驟JDBC資料庫
- jboss訪問資料庫的問題資料庫
- 模型資料作渲染優化時遇到的問題模型優化
- 兩個資料訪問受限的問題
- 使用JDBC構建簡單的資料訪問層JDBC
- 訪問ASM的ONNN程式佔用大量CPUASM
- 請問,呼叫JDBC聯資料庫的時候,會耗費那些資源JDBC資料庫
- 使用 redisson 時遇到的問題Redis
- 資料標準化遇到的問題
- 大資料面試可能遇到的問題大資料面試
- jdbc資源的回收問題!JDBC
- 從資料庫裡取值時遇到的換行問題(轉)資料庫
- 關於資料庫和jdbc的問題,指教資料庫JDBC
- vue 克隆物件時遇到的問題Vue物件
- 求助:資料庫併發訪問問題資料庫
- Windows 下JDBC 訪問Oracle11g 資料庫WindowsJDBCOracle資料庫
- 使用資料泵遷移遇到的問題
- 【WPF】大量Canvas轉換為本地圖片遇到的問題Canvas地圖
- 用JDBC THIN CLIENT能訪問oracle cluster嗎?JDBCclientOracle
- sqlplus 執行大量sql指令碼時遇到問題分析(很常見)SQL指令碼
- JAVA訪問雲資料mysql出現問題JavaMySql
- log4jdbc資料庫訪問日誌框架使用JDBC資料庫框架
- php部署到nginx時遇到的問題PHPNginx
- 一次用RMAN做資料庫恢復遇到的問題資料庫
- python訪問oracle時的問題總結PythonOracle
- 資料升級到5.1所遇到的問題
- DB2匯入資料遇到的問題DB2
- 爬蟲抓取網路資料時經常遇到的六種問題爬蟲
- Flume採集資料時在HDFS上產生大量小檔案的問題
- PHP大量資料迴圈時記憶體耗盡問題的解決方案PHP記憶體
- JDBC問題,求助JDBC
- 爭用!!!!一個關於JDBC的問題!JDBC
- Ubuntu共享資料夾訪問許可權問題Ubuntu訪問許可權
- 聊一個複用元件中使用debounce時遇到的問題元件