前天一去公司,老大说,服务器全挂了! 最后排查了半天,结论是内存溢出! 在WAS的DUMP日志中,看得我头晕眼花,终于找到了罪魁祸首,原来是有同事写代码的时候使用了可滚动的结果集导致内存溢出. 什么是可滚动的结果集?其实就是ResultSet游标,本来,Oracle是不支持游标往上移的,只能往下移,也就是一般使用的rs.next(),但是JDBC接口和驱动程序中提供了往上移动的游标,这明显意味着,这种游标是使用JAVA实现的,我没看过源码,但我猜测,应该是在游标移往下一条的时候,将得到的记录保存…
ResultSet不仅可以内存中的一张二维表一样保存statement执行SQL的结果集,还能通过结果集修改DB的数据.ResultSetMetaData则可以用来获得ResultSet对象的相关信息. ResultSet支持滚动和并发,但需要在创建statement时候,额外传入参数 可滚动结果集 ResultSet用来定位行的方法有,next(),  last(), absolute(), previous(), afterLast()等等. 支持absolute(), previous()…
一.ResultSet之滚动结果集 ResultSet表示结果集,它是一个二维的表格.ResultSet内部维护一个行光标(游标),ResultSet提供了一系列的方法来移动游标: void beforeFirst():把光标放到第一行的前面,这也是光标默认的位置: void afterLast():把光标放到最后一行的后面: boolean first(): 把光标放到第一行的位置上,返回值表示调控光标是否成功: boolean last():把光标放到最后一行的位置上: boolean is…
最近在处理DB2 ,查询中,发现如下问题.如果一个查询 count(*),有几十万行,分页如何实现 select row_number() over (order by fid desc ) as row_number,  other_field from   loaddata 如果这个查询的结果会返回几十万行,如何分页: 1  order by fid desc   中 fid 这个字段一定要建立索引,且建立索引时, 要根据sql中的排序方式保持一致            2 如何分页    …
在不整合框架的情况下,使用jdbc从数据库读取数据时都得一个个的get和set,不仅累代码还显得不简洁,所以利用java的反射机制写了一个工具类,这样用jdbc从数据库拿数据的时候就不用那么麻烦了. 因为很多情况下数据不止一条,所以返回的是对象类的一个集合. 需要注意的地方:在这里,数据库字段命名格式为:user_name 下划线格式,而java类型的命名格式为驼峰命名格式. 具体代码如下: package com.xc.sap.util; import java.sql.Connection;…
由于表中的数据过多(我的超过了50W+),查询select * from table ....报告内存溢出 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:1621) at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1398) at com.mys…
本人在做项目实施时,我们使用的是mysql数据库,在不到一个月的时间已经有了2千万条数据,查询的时候非常慢,就写了一个数据迁移的小项目,将这两千万条数据存放到MongoDB中看效率怎么样,再读取数据时老是出现内存溢出,查了好多资料才找到原因,解决方法: 在jdbc的URL上加两个参数就OK,成功解决内存溢出的问题.例如: "jdbc:mysql://10.20.100.86:3306/jsdb?useCursorFetch=true&defaultFetchSize=100";…
今天要做一个产品展示功能,由于产品比较多,一屏展示不完,所以想要做一个通过点击进行翻页的效果,在网上找了几个都不大好用,最后只能自己动手写了. 效果如下所示: 原理比较简单:将要滚动显示的区域的CSS的override设为hidden,宽度设成一个比较大的值,如4000px,然后每次点击上一页或下一页的按钮时,计算当前页数,如果已经到了最后一页,则回到第一页,滚动是通过控制div的left属性实现的,需要两个div,外面的div的position设为retative,里面的DIV的positio…
private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); public String queryAll() { Connection conn = null; Statement sta = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); con…
private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); public String queryAll() { Connection conn = null; Statement sta = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); con…