Domanda

ho a che fare con un problema che è sorto per un'applicazione ho lavorato sul quale si connette ad un file di Access tramite JDBC-ODBC. Su altre piattaforme Windows, questo problema non è stato riscontrato, ma su Windows 7 scatole a 64 bit, che tenta di connettersi con le stringhe di connessione senza DSN ritorno:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Più variazioni sulla corda sono state tentate, ma tutti sono tornati lo stesso errore. Ecco come è attualmente tenta di connettersi:

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  StringBuffer databaseConnectionString;

  if (SystemUtils.IS_OS_WINDOWS_7) {
       databaseConnectionString = new StringBuffer("jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=");
       databaseConnectionString.append(databaseFile);

  } else {
       databaseConnectionString = new StringBuffer("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=");
       databaseConnectionString.append(databaseFile);
       databaseConnectionString.append(";DriverID=22;READONLY=false}");
  }

Esaminando il conducente a 32 bit Fonte Admin ODBC dati confermano che i driver sono presenti. Tuttavia, quando regedt32.exe viene utilizzato per esaminare ODBC driver (HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers), nessuno di essi compare.

Chiunque può aiutare a far luce su questo?

È stato utile?

Soluzione

Ho trovato il problema era che stavo facendo funzionare il programma in Java a 64 bit. Anche se devo ancora avere successo il programma di rilevare se è in esecuzione in 32-bit o 64-bit Java, ho risolto la soluzione con l'installazione di un ambiente runtime Java a 32 bit e l'utilizzo di un file .bat che recita come segue:

@echo off

"C:\Program Files (x86)\Java\jre6\bin\java" -D32 -Xmx1024m -jar programName.jar

Grazie per l'aiuto!

Altri suggerimenti

Questa è stata una sfida difficile data la scarsità di messaggi di errore significativi da Java o MS di driver ODBC. Le risposte di cui sopra in merito a Down scegliendo di 32bit driver di accesso Java e MS (usando AccessDatabaseEngine.exe da MS) ha funzionato, ma costano una penalità significativa (circa il 30%) nella lavorazione di altre azioni rispetto all'utilizzo 64bit Java. Ero disposto a pagare questo prezzo così ho installato Java a 64 bit (in collaborazione con 32 bit, sia in una directory separata c: \ Java \ 32 o 64). Questo problema directory Quest'ultimo è stato importante per me perché stavo usando Apache Geronimo e non sarebbe iniziare se Java è stato installato in Program Files (x86) ... come la (86) sembrava di uccidere la sua analisi del file batch. Poi ho disinstallato 32bit MS Access e 64 bit installato MS Access (AccessDatabaseEngine_x64.exe). Infine, ha funzionato sia con velocità di connessione e MDB superiore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top