Проблемы с 64-битным драйвером Java JDBC-ODBC - PullRequest
5 голосов
/ 02 марта 2012

У меня есть программа, которая при компиляции с использованием 32-битной JVM работает нормально, но у меня возникают проблемы, если я пытаюсь использовать 64-битную JVM.Я получаю сообщение: "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified".

Я пытаюсь подключиться к базам данных Excel и SQL Server, используя следующий код:

String file = directory + "/fileName.xlsm";

String connectStr= "jdbc:odbc:DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ="  + file +  ";READONLY=false";

try {
    Class.forName(getDriver());
    gConnection = DriverManager.getConnection(connectStr);
    //do stuff with connection
}

Когда я пытался проверитьДиспетчер драйверов, похоже, не имел 64-битной версии драйверов.Любой способ легко исправить это и иметь возможность подключения с использованием 64-разрядных драйверов без изменения настроек на компьютере вручную (поскольку эта программа будет распространяться на несколько компьютеров, и мне не нужно загружать драйвер отдельно для любого компьютера, которыйхочет запустить его)?Кроме того, является ли более эффективным подключение с использованием 64-разрядных драйверов или же 32-разрядные драйверы такие же хорошие / быстрые (у меня очень большие наборы данных, поэтому небольшие различия будут иметь значение)?

1 Ответ

1 голос
/ 08 марта 2012

64-разрядные приложения не могут использовать 32-разрядные драйверы ODBC и наоборот, поэтому вы получаете это сообщение об ошибке.Вы можете проверить, какие драйверы ODBC доступны, запустив 32-битный (C: \ Windows \ SysWow64 \ odbcad32.exe) и 64-битный (C: \ Windows \ System32 \ odbcad32.exe) администратор источника данных ODBC (вкладка Драйверы)соответственно - на 64-битной системе конечно.Поначалу названия приводят в замешательство.

В приложении, с которым я работал, была похожая проблема - драйвер ODBC для Access / Excel был только 32-разрядным, то есть при запуске в 64-разрядном режиме наше приложение не могло обрабатывать открытие Excelили Доступ к файлам базы данных.В конечном итоге мы перешли на использование библиотеки Apache POI , которая является библиотекой Java, которая может напрямую читать / записывать Excel и другие документы Office.Возможно, вы захотите попробовать, хотя переключение потребует определенного объема работы.

В то время Office 2010 еще не было.Я не осознавал, что они создали 64-битный драйвер ODBC в Office 2010, и мне придется посмотреть, является ли это допустимым вариантом сейчас ... даже если мне не нравится полагаться на ODBC в приложении Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...