Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Хорошо, на мой взгляд эта запись в блоге сотрудником Oracle говорит все:

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

Какое приложение использует мост JDBC-ODBC для?

  • Если это производственный код, вы должны заменить IMHO на мост реальным драйвером и устаревшей базой данных с реальным ASAP
  • Если это тестовый код, который взаимодействует с БД доступа, таблицей Excel или любым другим, доступным через ODBC, попробуйте заменить его чистой базой данных Java, например H2
  • Если вы используете его для ad-hoc доступа к устаревшим БД доступа, например, для разработки и/или анализа, и на самом деле не можете или не хотите ничего обновлять, вы можете придерживаться JDK 7 для долгое время до даты окончания срока службы и, возможно, далеко за пределами этого

Ответ 2

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

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

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

  • Вышеупомянутая команда создаст файл с именем jdbc.jar

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

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

Ответ 3

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

Sun и Oracle официальные позиции уже давно -

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

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

Ответ 4

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

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, добавьте в свой путь сборки, выбрав в меню "Project/Properties/Java Compiler/Libraries/Add External 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 );

Ответ 5

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

Ответ 6

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