zoukankan      html  css  js  c++  java
  • JDBC用ResultSet访问大量数据时会遇到的问题

    我们经常需要JDBC来对数据库就行操作,一般流程为连接数据库、通过sql语句把需要的数据取出来保存到ResultSet,然后调用ResultSet方法的类似 getString,getInt()等方法来取出ResultSet中的数据。当数据量比较小的时候,这种访问方式可以正常运行。但是当数据量很大的时候,在对ResultSet中的部分数据完成访问后会抛出异常(JDBC游标超过限制出现ORA-01000 )。

    出现该问题的可能原因如下:

    1、java代码在执行createStatement和prepareStatement的时候,实际上都是相当与数据库中打开了一个cursor,尤其是如果createStatement和prepareStatement在循环内部的话,一直使用不关闭非常容易出错。

    2、使用getString函数的运行方式:程序会一次性把数据都放到内存里,然后通过调用ResultSet的nexhe getString等方法取数据,当数据量太大导致内存放不下的时候这种方式就会报错。因此可以改用getObject方法来访问ResultSet,然后把访问到的Object再转换成指定的类型(getObject的运行模式:数据不一次性全部读入内存,而是存在与数据库中,每次调用getObject都是直接从数据库中取数据,因此可以正常运行)。

  • 相关阅读:
    爬虫伪装头部
    selenium的简单使用
    selenium 安装与 chromedriver安装
    python多线程和线程池
    分析微信好友列表信息(json)
    BeautifulSoup简介
    Java泛型中extends和super的理解
    java 泛型--桥方法
    java 资源文件的读取
    java 清单文件
  • 原文地址:https://www.cnblogs.com/qingxinblog/p/4240111.html
Copyright © 2011-2022 走看看