Проблемы с JDBC-ODBC, DSN-меньшими соединительными строками и 64-битной Windows 7

StackOverflow https://stackoverflow.com/questions/3808633

Вопрос

Я имею дело с проблемой, который возникла за приложение, которое я работал над тем, что подключается к файлу доступа через JDBC-ODBC. На других платформах Windows эта проблема не была обнаружена, но в 64-битных коробках Windows 7, пытаясь подключиться к DSN-менее подключенным строкам.

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

Несколько вариаций на строке были предприняты попытка, но все они вернули ту же ошибку. Вот как это в настоящее время пытается подключиться:

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

Изучение драйвера в 32-битном источнике данных ODBC Admin подтверждает, что драйверы присутствуют. Однако, когда Regedt32.exe используется для изучения драйверов ODBC (HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/ODBC Drivers), Никто из них не появляется.

Может кто-нибудь поможет пролить свет на это?

Это было полезно?

Решение

Я обнаружил, что проблема заключалась в том, что я управляю программой в 64-битной Java. Хотя я еще не успешно определил программу, если он работает в 32-битной или 64-битной Java, я решил решение, установив 32-разрядную среду выполнения Java и используя файл .bat, который читает следующим образом:

@echo off

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

Спасибо за помощь!

Другие советы

Это была сложная задача, учитывая незнажение значимых сообщений об ошибках из драйвера ODBC Java или MS. Ответы выше при выборе до 32-битных драйверов Java и MS доступа (с использованием AccessDatabaseengine.exe от MS) работали, но стоили значительным штрафом (около 30%) в обработке других действий по сравнению с использованием 64-битной Java. Я не хотел оплатить эту цену, поэтому я установил 64-битную Java (в сочетании с 32битом, как в отдельном каталоге C: Java 32 или 64). Эта проблема в последнем каталоге была важна для меня, поскольку я использовал Apache Geronimo, и он не начнут, если Java был установлен в программных файлах (x86) ... как (x86), казалось, убьет его пакетных файлов. Затем я удалил 32-битном доступа MS и установил 64-битную MS Access (AccessDatabaseengine_x64.exe). Наконец, он работал с более высокой скоростью, так и MDB-соединением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top