Удаление моста JDBC ODBC в Java 8

Начиная с Java 8, мост JDBC-ODBC больше не будет включен в JDK.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown

Есть ли другое решение, соединяющее мост JDBC-ODBC?

6 ответов

Мы все еще можем использовать JDBC-ODBC Bridge в java 8, просто следуйте этому простому рецепту:

  1. Загрузите JDK 7 или JRE 7.
  2. Перейдите в папку JRE\lib и найдите файл rt.jar.
  3. Разархивируйте его (если у вас установлен WinRAR или 7zip) или вы можете переименовать его в rt.zip и разархивировать.
  4. Скопируйте папки sun\jdbc и sun\security\action, сохраните структуру папок. т.е. вы должны иметь структуру папок, как показано ниже:

    Sun --> Security --> Action
        --> JDBC
    
  5. Откройте окно CMD. Перейдите в родительскую папку папки Sun. Запустите команду: jar -cvf jdbc.jar sun

  6. Приведенная выше команда создаст файл с именем jdbc.jar
  7. Скопируйте JDBC.jar в свой JDK8 или JRE8. lib папка. Если это не сработает, попробуйте lib\ext папка.
  8. Скопируйте jdbcodbc.dll из JRE\bin вашей установки JRE 7 в JRE\bin вашей установки JRE 8.
  9. Перезапустите свою JVM.

Как включить мост JDBC-ODBC для JDK 8

Ну, по моему мнению, эта запись в блоге сотрудника Oracle говорит обо всем:

Я бы порекомендовал вам использовать драйвер JDBC, предоставленный поставщиком вашей базы данных, или коммерческий драйвер JDBC вместо моста JDBC-ODBC.

Для какого приложения вы используете мост JDBC-ODBC?

  • Если это производственный код, вы должны ИМХО заменить мост реальным драйвером, а устаревшую базу данных - реальным как можно скорее.
  • Если это тестовый код, который взаимодействует с БД Access, электронной таблицей Excel или чем-то еще, к чему вы можете получить доступ через ODBC, попробуйте заменить его чистой базой данных Java, такой как H2
  • Если вы используете его для специального доступа к устаревшим базам данных Access, скажем, для разработки и / или анализа, и действительно не можете или не хотите ничего обновлять, вы можете довольно долго придерживаться JDK 7 до даты окончания его жизни и, вероятно, далеко за ее пределами

Есть ли другое решение, соединяющее мост JDBC-ODBC?

Официальные позиции Sun и Oracle уже давно таковы:

[JVM-связанный] мост JDBC-ODBC следует рассматривать как переходное решение [...] Oracle не поддерживает мост JDBC-ODBC.

Тем не менее, мой работодатель, OpenLink Software, производил коммерческие Мосты Типа 1 коммерческого уровня между JDBC и ODBC начиная с JVM 1.0, и они полностью совместимы с текущей JVM 1.8. Вы можете узнать больше здесь -

Я нашел разумное решение, которое позволяет использовать существующий код с изменением только для открытия логики подключения к базе данных.

UCanAccess - это драйвер JDBC с открытым исходным кодом.

http://ucanaccess.sourceforge.net/site.html

Это имеет две зависимости, одна из которых имеет еще две зависимости.

jackcess-2.0.0.jar или позже

commons-lang-2.4.jar

commons-logging-1.0.4.jar

hsqldb.jar (2.2.5)

Это все с открытым исходным кодом. Выполните поиск в Интернете, загрузите, разархивируйте, если необходимо, и поместите все четыре банки плюс один для UCanAccess в каталог в вашем проекте (например, JDBC-to-MSAccess). Если вы используете Ecplise, добавьте ваш путь сборки, выбрав в меню "Проект / Свойства / Компилятор Java / Библиотеки / Добавить внешние файлы JAR" и выберите все пять файлов JAR.

Логика подключения действительно проста:


String strConnectionString = "";
Connection conAdministrator = null;

// Register driver
Class.forName( "net.ucanaccess.jdbc.UcanaccessDriver" );

// System.getProperty( "user.dir" ) => Current working directory from where application was started

strConnectionString = "jdbc:ucanaccess://" + System.getProperty( "user.dir" )  + "\\Your-database-name.<mdb or accdb>";

// Open a connection to the database
conAdministrator = DriverManager.getConnection( strConnectionString );

Роберт Петермайер (John Petermeier) высказал хорошее мнение, что накопители H2 поддерживают ODBC через драйвер PostgreSQL, и вы можете установить драйвер соответственно по ссылке из Stackru. Настройка PostgreSQL ODBC в Windows

Я знаю, что на этот вопрос уже давным-давно ответили, но я хотел бы выделить продолжение работы с DataDirect. В этом блоге https://www.progress.com/blogs/jdbc-odbc-bridge-replacement-yields-performance-boost автор рассказывает о том, как их мост может повысить производительность на 310%. Пробную версию моста можно скачать здесь: https://www.progress.com/jdbc/sequelink

Другие вопросы по тегам