Connessione database - percorso relativo

di il
5 risposte

Connessione database - percorso relativo

Ciao a tutti, nello sviluppo del mio programma con Eclipse ho la necessità di accedere a un database accdb. Seguendo le indicazioni che ho trovato su internet ho fatto
Connection con = DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\\eclipse_work\\mioProgramma\\mioDb.accdb");
e tutto funziona perfettamente.
Allora ho provato a fare
Connection con = DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=mioDb.accdb");
anche perchè in questo modo, se ho intenzione di utilizzare il software su un'altra macchina, mi basta mettere il file .jar e il file .accdb nella stessa cartella.
Invece solleva la seguente eccezione:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x13c8 Thread 0xda8 DBC 0x5597fd4                                                              Jet'.
Qualcuno ha qualche idea?
Grazie!

5 Risposte

  • Re: Connessione database - percorso relativo

    Ciao mi sa che con la seconda chiamata tenta di cercare un DSN configurato sulla macchina.

    prova a mettere il path fisico del database in una variabile, usa:
    pathDB = application.getRealPath() + "\\mioDb.accdb";
    e poi lo passi alla stringa di connessione.
  • Re: Connessione database - percorso relativo

    Toki ha scritto:


    Ciao mi sa che con la seconda chiamata tenta di cercare un DSN configurato sulla macchina.

    prova a mettere il path fisico del database in una variabile, usa:
    pathDB = application.getRealPath() + "\\mioDb.accdb";
    e poi lo passi alla stringa di connessione.
    Ciao, grazie della risposta ma non mi è chiaro come utilizzare il tuo suggerimento... "application" non viene riconosciuto e cercando su internet ho visto che getRealPath fa parte di Interface ServletContext.
    Forse mi ero spiegato male io ma l'applicazione deve girare in locale, con un file .accdb "a fianco".
  • Re: Connessione database - percorso relativo

    Ciao,
    dalle info che hai fornito, il problema sembra legato a come indichi il database.
    Nella prima istruzione (che funziona) metti il path fisico.
    Nella seconda istruzione indichi il nome del database e ti va in errore.

    Il mio suggerimento è di usare una variabile e quindi:
    Connection con = DriverManager.getConnection("jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + pathDatabase);

    La variabile pathDatabase dovrà contenere il percorso fisico del database e quindi "D:\\eclipse_work\\mioProgramma\\mioDb.accdb".
    Per ottenere cio, devi usare una funzione che restituisce il path dell'applicazione a cui concateni il nome del database.
    Quindi:
    pathDatabase = funzione_che_restituisce_il_path + "\\mioDb.accdb"

    Se non puoi usare application.getRealPath(), prova a trovare una funzione alternativa.
  • Re: Connessione database - percorso relativo

    Toki ha scritto:


    Se non puoi usare application.getRealPath(), prova a trovare una funzione alternativa.
    Era proprio questo il problema, tutto il resto l'avevo capito! Adesso provo a cercare qualcosa.
    Grazie ancora.
  • Re: Connessione database - percorso relativo

    Ok, ho risolto il problema. Nel caso a qualcuno fosse utile, si può trovare il percorso dell'applicazione con
    String path = new File(".").getCanonicalPath();
    Grazie di nuovo.
Devi accedere o registrarti per scrivere nel forum
5 risposte