mysql prestatement_mysql prepareStatement executeQuery() 内存溢出的解决办法 | 学步园

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上打开。

你可能感兴趣的:(mysql,prestatement)