Frage

Ich bin der Umgang mit einem Thema, das für eine Anwendung entstanden ist, ich habe auf gearbeitet, was eine Verbindung zu einer Access-Datei über JDBC-ODBC. Auf anderen Windows-Plattformen, hat dieses Problem nicht aufgetreten, aber auf Windows 7 64-Bit-Boxen, versuchen, mit DSN Verbindung Strings zu verbinden zurück:

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

Mehrere Variationen auf der Saite versucht worden, aber alle haben die gleichen Fehler zurückgegeben. Hier ist, wie es zur Zeit versucht, eine Verbindung:

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

Die Untersuchung der Fahrer in der 32-Bit-ODBC-Datenquelle Admin bestätigt, dass die Treiber vorhanden sind. Wenn jedoch regedt32.exe verwendet wird, um die ODBC-Treiber (HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers) zu untersuchen, keiner von ihnen erscheinen.

Kann mir jemand helfen, etwas Licht in diese Schuppen?

War es hilfreich?

Lösung

Ich fand das Problem war, dass ich das Programm in 64-Bit-Java ausgeführt wurde. Obwohl ich noch erfolgreich das Programm erkennen müssen, wenn es sich in 32-Bit- oder 64-Bit-Java ausgeführt hat, habe ich die Lösung gelöst durch eine 32-Bit-Java-Laufzeitumgebung zu installieren und eine .bat-Datei, die wie folgt lautet:

@echo off

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

Danke für die Hilfe!

Andere Tipps

Das war eine schwierige Herausforderung der Mangel an aussagekräftigen Fehlermeldungen von JAVA oder MS ODBC-Treiber angegeben. Die Antworten oben über unten Auswahl Java und MS Access-Treiber 32bit (mit AccessDatabaseEngine.exe von MS) funktionieren aber eine erhebliche Strafe (etwa 30%) Kosten bei der Verarbeitung andere Aktionen im Vergleich zu 64-Bit-Java verwenden. Ich war nicht bereit, diesen Preis zu zahlen, damit ich 64-Bit-Java (in Verbindung mit 32-Bit, die beide in einem separaten Verzeichnis c: \ Java \ 32 oder 64) installiert. Dieses letztere Verzeichnis Problem war für mich wichtig, da ich Apache Geronimo wurde mit und es wäre nicht gestartet werden, wenn Java in Program Files (x86) installiert wurde, ... als die (x86) schien seine Batch-Datei-Analyse zu töten. Ich habe dann deinstalliert 32bit MS Access und installiert 64bit MS Access (AccessDatabaseEngine_x64.exe). Schließlich ist es sowohl mit höherer Geschwindigkeit und MDB-Verbindung funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top