2012-03-02 4 views
5

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

Я пытаюсь подключиться к базам данных 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-разрядных так же хорошо/быстро (у меня есть очень большие наборы данных, поэтому небольшие различия будут иметь значение)?

+0

какая версия Excel? до Office 2010 драйверы были только 32 бит. – vulkanino

+0

о, извините. это тоже 2010. Microsoft Office 32-битный, но я полагаю, что все еще можно использовать 64-битные драйверы? – scaevity

+0

попробуйте это: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255#Overview – vulkanino

ответ

1

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

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

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

Смежные вопросы