jdbc中的resultset溢出问题,链结url指定字符集的问题
7 2003-07-29 01:48:07 >1.oracle的jdbc驱动,用thin模式时,可以指定>url="jdbc:oracle:thin:@127.0.0.1:1521:melinets",我看到有的数据库支持在>url里指定字符集,在url后面跟"encoding=8859_1"就行了.想知道oracle是否支持在>url里指定字符集?
>
>2.oracle的jdbc驱动.检索大结果集时,如果结果集数量大于一定的条数(eg:50000条),用ResultSet.next()滚动到超过50000条时,会报如下错误:
> 42569:
> 您的内容为:cen_rec_id:012003a00202615
> 您的内容为:title:三十年科研成果汇编
> 您的内容为:author:卫生部武汉生物制品研究所
> 42570:
> 您的内容为:cen_rec_id:012003a00202616
> 您的内容为:title:中国国家标准汇编
> 您的内容为:author:中国国家标准出版社总编室
> java.sql.SQLException: 违反协议
> at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
> at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
> at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:857)
> at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:550)
> at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
> at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:889)
> at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:242)
> at BuildIndexDB.indexDB(BuildIndexDB.java:77)
> at BuildIndex.indexSingle(BuildIndex.java:69)
> at BuildIndex.indexAll(BuildIndex.java:55)
> at BuildIndex.main(BuildIndex.java:18)
> Exception in thread "main"
> Output completed (1 min 38 sec consumed) - Normal Termination
>
> 怀疑是resultset检索结果集时,把所有的结果都放到了jvm内存中,超大结果集导致溢出.试用过运行时加入 -Xms 和-Xmx来指定分配给jvm的内存,仍无法解决.
> 原本sql语句是"select * from table_name",然后就while (rs.next())来循环输出了,到42500条是报如上错误.
> 把sql语句分割成每1万条检索一次
> "select * from ( select a.*, rownum rnum from ( select * from "+ DB_Table +") a where rownum <= ? ) where rnum >= ? ";
> 用rownum来限定每次检索只返回1万条数据,结果前四次调用都成功,第5次到2000多条时报同样错误.
> 如果我在sql语句中指定起始条数是60000,结束条数是70000,也可以检索出几百条数据,然后依然报同样错误.
>
> 因为我们的应用需要对几十万条数据量的表做操作,而且要求每条数据都要处理.所以目前只能处理前4万多条,后面的就无法处理了,希望得到指点,谢谢!!