2012-01-11 1 views
11

"시스템 리소스 초과"게시물을 읽었지만 그와 비슷하지 않습니다. 나는 솔루션을 찾기 위해 지난 3 시간을 보냈다. 많은 연결/명령문/결과 세트가 없으며 항상 모든 것을 닫습니다. 코드가 작동하는 데 사용되었지만 쿼리 중에 "시스템 리소스가 초과되었습니다"예외가 발생하지만 에 연결할 때 예외가 발생합니다. 나는 내 코드에서 어떤 것을 변경하지 않았지만, 지금은 작동하지 않습니다. 10 번 중 1 번 시도해 봅니다. 나는 그것에 몇 가지 변화를 시도했지만 차이는 없었다. 내 액세스 파일은 15 - 50MB입니다. 내 코드 :Java jdbc ODBC를 통해 액세스 파일에 연결하는 동안 "시스템 리소스가 초과되었습니다"

private String accessFilePath; 
private Connection myConnection; 
public boolean connectToAccess(String myAccessFilePath) { 
    accessFilePath = myAccessFilePath; 
    //Get connection to database 
    try { 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     // set properties for unicode 
     Properties myProperties = new Properties(); 
     myProperties.put("charSet", "windows-1253"); 
     myConnection = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + accessFilePath, myProperties); // I get the exception here 
    } catch (Exception ex) { 
     System.out.println("Failed to connect to " + accessFilePath + " database\n" + ex.getMessage()); 
     return false; 
    } 
    return true; 
} 

다른 시간대와 다른 점은 무엇입니까? Access 파일은 이전 연결을 유지합니까? 여기서 무엇이 잘못 될 수 있습니까?

+1

운영 체제를 다시 시작해 보셨습니까? 일부 연결 관련 자원은 절대로 연결을 종료하지 못했던 프로그램의 중단 된 실행으로 인해 할당이 해제되지 않았을 수 있습니다. –

+0

이미 다시 시작했습니다. 그것은 나의 첫 번째 생각이었다. 나는 아주 이상한 발견 신선한 다시 시작한 후, 나는 첫 번째 연결 시도 중에 예외를 얻을. 그것은 미친 짓이야 ... 나는 또한 다양한 Access 파일에 대해 동일한 예외를 얻는다. –

+1

와우, 그것은 기괴하다. 시도 할 다음 사항 : ADO를 사용하여 C# 또는 VB에서이 파일에 액세스 할 수 있습니까? –

답변

6

좋아, 해결책을 찾았습니다. 처음에는 새로운 Java 프로젝트를 시작하고 동일한 코드 라인을 복사했습니다. 새 프로젝트에서 시도 할 때마다 파일에 성공적으로 연결되었습니다. 그래서 그것은 나를 때렸다. VM 설정을 보았습니다. 내 원래 프로그램에서 가상 컴퓨터에 너무 많은 메모리를 할당했습니다. 그래서 파일에 단일 연결을해도 메모리가 남아 있지 않습니다.

내 설정이었다 - VM 옵션> : -Xmx1536m -Xms768m (과도한 약간)

내가 그것을 변경 -> VM 옵션 : -Xmx512m -Xms256m

을 그리고 그것은했다. 의견을 주셔서 감사합니다. 다른 사람들에게 도움이 되었기를 바랍니다. 찾기 위해 많은 시간을 할애하기 때문입니다.

관련 문제