Question

Je fais face à un problème qui se pose pour une application que je travaille sur lequel se connecte à un fichier d'accès via JDBC-ODBC. Sur d'autres plates-formes Windows, cette question n'a pas été rencontré, mais sur Windows 7 boîtes 64 bits, en essayant de se connecter avec des chaînes de connexion DSN retour:

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

variations multiples sur la chaîne ont été tentées, mais tous sont revenus la même erreur. Voici comment il essaie actuellement de se connecter:

  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}");
  }

L'examen du pilote dans les données ODBC 32 bits Source Administrateur confirme que les pilotes sont présents. Toutefois, lorsque regedt32.exe est utilisé pour examiner les pilotes ODBC (HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers), aucun d'entre eux apparaissent.

Quelqu'un peut-il aider à faire la lumière sur ce sujet?

Était-ce utile?

La solution

J'ai trouvé le problème était que je courais le programme en Java 64 bits. Bien que je dois encore avoir avec succès le programme de détecter si elle est en cours d'exécution en 32 bits ou 64 bits Java, je l'ai résolu la solution en installant un environnement d'exécution Java 32 bits et en utilisant un fichier .bat qui se lit comme suit:

@echo off

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

Merci pour l'aide!

Autres conseils

Ce fut un défi difficile compte tenu de la rareté des messages d'erreur significatifs de Java ou le pilote ODBC de MS. Les réponses ci-dessus sur la sélection vers le bas pour les pilotes 32 bits Java et MS Access (en utilisant AccessDatabaseEngine.exe de MS) ont fait le travail, mais le coût d'une pénalité importante (environ 30%) dans le traitement d'autres actions par rapport à l'utilisation de Java 64 bits. Je ne voulais pas payer ce prix si j'ai installé Java 64 bits (en liaison avec 32bit, tant dans un répertoire distinct c: \ Java \ 32 ou 64). Cette dernière édition de l'annuaire était important pour moi depuis que j'utilisais Apache Geronimo et il ne démarre pas si Java a été installé dans Program Files (x86) ... comme (x86) semblait tuer son analyse de fichier batch. Je puis désinstallé MS Access 32 bits et 64 bits installé MS Access (AccessDatabaseEngine_x64.exe). Enfin, il a travaillé à la fois vitesse et connexion MDB.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top