2012-01-11 6 views
11

Ho letto tutti i messaggi "Risorsa di sistema superata", ma non è simile a loro. Ho passato le ultime 3 ore alla ricerca di una soluzione. Non ho molte connessioni/istruzioni/gruppi di risultati e le chiudo sempre tutte. Il mio codice funzionava ma ora ottengo l'eccezione "Risorsa di sistema superata", non durante le query, ma QUANDO CERCO DI COLLEGARSI. Non ho cambiato nulla dal mio codice, tuttavia non funziona al momento, tranne 1 su 10 volte lo provo. Ho provato a cambiare alcune cose ma nessuna differenza. I file di accesso sono 15 - 50 MB. Il mio codice è:"Risorsa di sistema superata" durante la connessione al file di accesso tramite 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; 
} 

Quello che oggi è diverso da altri tempi? I file di Access mantengono aperte le connessioni precedenti? Cosa può esserci di sbagliato qui?

+1

Hai provato a riavviare il tuo sistema operativo? Potrebbe essere che alcune risorse relative alla connessione non siano mai state deallocate a causa, forse, delle interruzioni del programma che non sono mai riuscite a chiudere la connessione. –

+0

Ho già provato a riavviare. Era il mio primo pensiero. Trovo molto strano che dopo un nuovo riavvio, ottengo l'eccezione durante il primo tentativo di connessione. È pazzesco ... Ho anche la stessa eccezione per i vari file di Access –

+1

Wow, è bizzarro. La prossima cosa da provare: puoi accedere a questi file da C# o VB usando ADO? –

risposta

6

OK, ho trovato la soluzione. All'inizio ho avviato un nuovo progetto Java e ho copiato le stesse linee di codice. Mi sono collegato con successo ai miei file ogni volta che l'ho provato nel mio nuovo progetto. Quindi mi ha colpito. Ho guardato le mie impostazioni VM. Nel mio programma originale HO ASSEGNATO TROPPO MEMORIA ALLA MACCHINA VIRTUALE quindi non è rimasta memoria nemmeno per una singola connessione ai file.

mie impostazioni in vigore -> Opzioni VM: -Xmx1536m -Xms768m (un po 'eccessiva)

ho cambiato -> Opzioni VM: -Xmx512m -Xms256m

e ha funzionato. Grazie per i vostri commenti. Spero che questo aiuti gli altri, perché passo molte ore a trovarlo.

Problemi correlati