2014-01-17 1 views
0

오류가 라인 118에 있다고 나와 있기 때문에 MySQL 문에서 일부 데이터를 검색하려고 할 때 위의 오류가 발생합니다. 여기에 MySQL입니다 : 라인 근처메모리 부족 java heap spcae with

    .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) 

이 오류가 발생합니다 테이블에 넣은 다음 시도하고 검색하면 데이터 양은 한두 행이어야합니다.

+2

SELECT가 반환하는 행 수는 몇 개입니까? – RononDex

+0

어떤 오류가 발생합니까? – PeterMmm

+0

DB 도구에서 쿼리를 실행하여 2 개의 행만 반환되었다고 표시 했습니까? Java를 어떻게 시작합니까? 즉, 시작할 때 최대 힙을 무엇으로 설정합니까? 단순히 앱을 실행할 충분한 힙을 허용하지 않았을 수 있습니다. –

답변

1

rs.absolute(index)은 커서를 (행 1로) 이동시키고 while(rs.next()) 루프는 끝나지 않습니다. 결과 집합 오프셋이 1이므로 결과 집합이 한 행으로 된 경우 아무런 문제가 없습니다.