Удаление моста JDBC ODBC в java 8
Начиная с Java 8, JDBC-ODBC Bridge больше не будет включен в JDK.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown
Есть ли другое решение, соединяющее JDBC-ODBC Bridge?
Ответы
Ответ 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