2010-03-04 13 views
5

Per anni, su sistemi a 32 bit non ho mai avuto un problema. Perché non è possibile utilizzare il driver ODBC Java a 64 bit con un database di Access su Windows Server 2008? Il driver ODBC è su un sistema a 64 bit scritto con codice a 32 bit o qualcosa del genere? Qui è l'errore che vedo, con un 64 bit JDK1.6.018:Come utilizzare il driver ODBC Java 64-bit con un database Access su Windows 2008?

java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application 
     at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957) 
     at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114) 
     at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073) 
     at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323) 
     at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174) 
     at java.sql.DriverManager.getConnection(DriverManager.java:582) 
     at java.sql.DriverManager.getConnection(DriverManager.java:185) 
     ..... 

ho il sospetto che il driver di accesso è a 32 bit, perché non compare nel pannello di controllo ODBC a 64 bit per Windows . Solo due driver a 64 bit (per SQL Server) sono visibili nella scheda "Driver" del pannello di controllo ODBC.

Quindi, cosa posso fare? Preferirei non dover utilizzare SQL Server e il driver JDBC Type-4 (ma sarebbe la mia ultima risorsa).

risposta

0

Microsoft Access in Office 2010 avrà una versione a 64 bit. Le versioni precedenti di Microsoft Office sono solo a 32 bit.

L'utilizzo di SQLExpress è gratuito e abbastanza facile da utilizzare e Accesso e Java possono connettersi ad esso, quindi sembra una buona scelta.

Dal momento che lei ha detto che era l'ultima risorsa, l'altra opzione è quella di eseguire il JDK a 32 bit, che dovrebbe funzionare bene su Server 2008.

+0

credo che ci sia un problema nell'esecuzione del JDK a 32 bit su un computer a 64 bit. Sospetto che abbia qualcosa a che fare con il modo in cui la JVM usa .dlls per gestire la gestione della memoria (RAM). ho avuto problemi, quando ho provato, ed è per questo che sto usando il jdk a 64 bit. – djangofan

+0

@djangofan, la limitazione sarà in quanta memoria può usare la JVM. Certo, se ci sono problemi sottili, non lo saprei necessariamente. – Yishai

+0

sì, probabilmente vero. Ho pensato che lo stesso pensassi, all'inizio ... – djangofan

2

Hai provato lanciando il manager ODBC a 32 bit da Windows 2008 - per vedere se questo ti aiuta a diagnosticare il problema?

La versione a 32 bit del file Odbcad32.exe si trova nella cartella% systemdrive% WindowsSysWoW64

+0

risposta utile. Grazie. – djangofan

1

Ho avuto lo stesso problema e la soluzione, nel mio caso, è stato quello di usare un 32 bit JDK.

+2

JDK a 32 bit funzionerebbe solo se fosse stato installato il MS Office 2010 a 32 bit. In tal caso, in genere, è necessario utilizzare il pannello di controllo odbccad32.exe che si trova nella directory SYSWOW64. Dico "generalmente" perché ci sono alcuni avvertimenti. – djangofan

2

Ho avuto lo stesso problema. La causa era che stavo usando un DSN ODBC a 64 bit con un JDK a 32 bit. Questi dovrebbero essere la stessa architettura (sia ODBC DSN che JDK devono essere 64 bit o 32 bit). Se si registrasse ODBC DSN su 32 bit e si chiamasse da un'applicazione a 64 bit (JVM a 64 bit) si verificherebbe un errore che l'origine DSN non è stata trovata (Quindi, per l'applicazione vedere l'origine ODBC: la JVM su cui si sta eseguendo l'app dovrebbe essere la stessa architettura di ODBS DSN: entrambi devono essere a 64 bit o entrambi a 32 bit). Spero che questo ti aiuti.

+0

Sì, quando ho realizzato che ci sono 2 pannelli di controllo ODBC, le cose hanno avuto un senso. – djangofan

2

Se si utilizza Microsoft Office 2010, che ritorna nell'architettura a 64 bit. Quindi rimuoverà questo errore relativo alla mancata corrispondenza dell'architettura tra il driver e l'applicazione.

1

Nel mio caso, ho avuto un JDK 6u45 32 bit su un XP che ha utilizzato il jdbc: odbc conducente per interrogare un file Accdb. Così ho avuto un JDK a 32 bit e anche un MS Office a 32 bit che ha installato automaticamente il driver necessario sul mio computer quando l'ho installato. Poi ho spostato il progetto su un Windows 7 con un Netbeans 7.3 con un JDK 6u45 a 32 bit, un MS Office 2013 a 64 bit, quindi sembra essere il problema, Se hai un JDK a 32 bit installato allora hai bisogno di una versione a 32 bit di Office (con il driver corretto fornito con la versione di Office). E lo stesso con la versione a 64 bit.

Nel mio caso ho cercato archivio Java di Oracle per la versione a 64 bit di JDK6u45 e cambiato il JDK del progetto per la versione a 64 bit.

Problemi correlati