mysql prepareStatement executeQuery() 内存溢出的解决办法

来源:互联网 发布:naca0012翼型实验数据 编辑:程序博客网 时间:2024/04/29 01:29

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

原创粉丝点击