1. PreparedStatement ps = con.prepareStatement("select * from myTableName",
ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
2. //ps.setFetchSize(Integer.MIN_VALUE);
3. ResultSet rs = ps.executeQuery();
当myTableName这个表的数据量比较大时(100w条),第3行会抛出内存溢出异常。
解决办法:加上第2行可以解决问题.
注意:第2行不能写成ps.setFetchSize(1);
4. PreparedStatement ps2 = con.prepareStatement("select * from myTable2");
5. ResultSet rs2 = ps2.executeQuery();
但是,当去掉第2行的注释后,第5行会抛出异常。因为设置了ps.setFetchSize(Integer.MIN_VALUE)后,
在rs关闭之前,在con上不能打开其他的ResultSet.
解决办法:如果前面的结果集必须处于打开状态,则后面要打开的结果集可以在另一个Connection上打开。