当我尝试从 MySQL 语句检索一些数据时,我收到上述错误,因为该错误指出错误位于第 118 行;这是 MySQL:
.prepareStatement("SELECT orderr.* FROM orderr JOIN person ON orderr.personID = person.personID WHERE person.first_name = ?",java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY, Integer.MIN_VALUE);
第 118 行附近的代码:
int index = 0;
if (rs.next()) {
index++;
rs.beforeFirst();
while (rs.next()) {
for (int i = 1; i < 4; i++) { // retrive column data from order
message.append(rs.getInt(i)); //table and append to sb.
if(i != 3)message.append(" "); <---line 118.
}
if(rs.next()){
rs.absolute(index);
message.append("\n");
}
}
}
我得到的确切错误是:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2367)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
at java.lang.StringBuffer.append(StringBuffer.java:237)
at stl.Sql.printPersonsOrders(Sql.java:118)
at stl.Main.main(Main.java:19)
只有当我向表中添加了两次相同的数据然后尝试检索时,才会出现此错误,数据量应该只有一两行。
最佳答案
您的rs.absolute(index)
将光标移回(到第 1 行),while(rs.next())
循环永远不会结束。对于只有一行的结果集来说这没有问题,因为结果集偏移量为 1。
关于java - MySQL 内存不足 Java 堆空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184950/