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訪問KingbaseES資料庫SocketTimeoutException Read timed outJDBC資料庫Exception
- 資料標準化遇到的問題
- 【WPF】大量Canvas轉換為本地圖片遇到的問題Canvas地圖
- vue 克隆物件時遇到的問題Vue物件
- Spring Boot入門(五):使用JDBC訪問MySql資料庫Spring BootJDBCMySql資料庫
- JAVA訪問雲資料mysql出現問題JavaMySql
- windows部署dify以及會遇到的問題Windows
- 配置MapReduce時遇到的問題記錄
- php部署到nginx時遇到的問題PHPNginx
- 爬蟲抓取網路資料時經常遇到的六種問題爬蟲
- Hive學習之JDBC訪問HiveJDBC
- Flume採集資料時在HDFS上產生大量小檔案的問題
- Ubuntu共享資料夾訪問許可權問題Ubuntu訪問許可權
- WEB應用訪問緩慢的問題定位Web
- 客戶端(windows)訪問FTP伺服器遇到的問題(總結)客戶端WindowsFTP伺服器
- 聊一個複用元件中使用debounce時遇到的問題元件
- 用JavaScript訪問SAP雲平臺上的服務遇到跨域問題該怎麼辦JavaScript跨域
- MySQL查詢中Sending data佔用大量時間的問題處理MySql
- linux遇到的問題Linux
- Vagrant 遇到的問題
- Homestead 遇到的問題
- sudo 遇到的問題
- JackJson遇到的問題JSON
- mysql 遇到的問題MySql
- WangEditor遇到的問題
- spring 載入不了jdbc.properties檔案的資料問題SpringJDBC
- Angular應用解決跨域訪問的問題Angular跨域
- Spring資料訪問Spring
- Oracle如何診斷遠端訪問資料庫慢/超時等問題小結Oracle資料庫
- rvest爬取雞蛋期貨資料(遇到的問題)
- 用筆記來記錄遇到的問題:釋出版本和非釋出版本遇到的問題筆記
- 遇到奇葩問題
- Oracle JDBC ResultSet引數測試OracleJDBC
- 解決資料庫高併發訪問瓶頸問題資料庫
- 剛開始學習nlp時遇到的問題
- Laravel6.18.0 NPM 編譯時遇到的問題LaravelNPM編譯