在java 8中删除JDBC ODBC桥

Kar*_*hik 34 java jdbc-odbc java-8

从Java 8开始,JDK将不再包含JDBC-ODBC Bridge.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown
Run Code Online (Sandbox Code Playgroud)

有没有其他解决方案连接JDBC-ODBC Bridge?

frh*_*ack 25

我们仍然可以在java 8中使用JDBC-ODBC Bridge,只需遵循这个简单的配方:

  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
    
    Run Code Online (Sandbox Code Playgroud)
  5. 打开CMD窗口.转到Sun文件夹的父文件夹.运行命令:jar -cvf jdbc.jar sun

  6. 上面的命令将创建一个名为jdbc.jar的文件
  7. 将JDBC.jar复制到JDK8或JRE8 lib文件夹.如果这不起作用,请尝试该lib\ext文件夹.
  8. 将jdbcodbc.dll从JRE 7安装的JRE\bin复制到JRE 8安装的JRE\bin.
  9. 重新启动JVM.

如何为JDK 8启用JDBC-ODBC桥

  • 嗨 user2423959。尝试从我的谷歌驱动器下载文件,https://drive.google.com/folderview?id=0B7NI8e6ep6rPQ0paQllwUU9vUW8&usp=sharing 确保在类路径上都有。(包含的文件适用于 64 位 odbc 顺便说一句) (3认同)
  • 提升这个解决方案,因为它对我有用.但是NB,你必须复制到\ lib\ext文件夹,并注意不要将32位版本复制到64位版本和副版本. (2认同)

Rob*_*ier 15

好吧,在我看来,Oracle员工的博客文章说明了一切:

我建议您使用数据库供应商提供的JDBC驱动程序或商业JDBC驱动程序而不是JDBC-ODBC Bridge.

您使用JDBC-ODBC Bridge的应用程序是什么类型的?

  • 如果它是生产代码,你应该恕我直言用真正的驱动程序和遗留数据库替换桥接器
  • 如果它是与Access DB,Excel电子表格或您可以通过ODBC访问的任何内容交互的测试代码,请尝试将其替换为纯Java数据库,如H2
  • 如果您将其用于对开发和/或分析目的的旧版Access数据库的临时访问,并且实际上不能或不想更新任何内容,那么您可以坚持使用JDK 7很长一段时间直到它的生命终止日期,可能远远超过它

  • Oracle员工建议更改企业数据库,因为缺少持续的驱动程序支持.经典. (5认同)

Tal*_*Ted 11

有没有其他解决方案连接JDBC-ODBC Bridge?

太阳和甲骨文的官方立场一直是 -

[JVM-bundled] JDBC-ODBC Bridge应被视为过渡解决方案[...] Oracle不支持JDBC-ODBC Bridge.

但是,我的雇主OpenLink Software自JVM 1.0以来在JDBC和ODBC之间生成了企业级商用Type 1桥接器,并且这些桥接器与当前的JVM 1.8完全兼容.你可以在这里了解更多 -


小智 10

我找到了一个合理的解决方案,允许使用现有代码,只更改打开数据库连接逻辑.

UCanAccess是一个开源的JDBC驱动程序.

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

这有两个依赖项,其中一个依赖项有两个依赖项.

jackcess-2.0.0.jar或更高版本

commons-lang-2.4.jar

commons-logging-1.0.4.jar
Run Code Online (Sandbox Code Playgroud)

的hsqldb.jar(2.2.5)

这些都是开源的.进行互联网搜索,下载,必要时解压缩,并将所有四个罐子和UCanAccess的罐子放在项目的目录中(例如JDBC-to-MSAccess).如果使用Ecplise,请从菜单"Project/Properties/Java Compiler/Libraries/Add External JARs"中选择添加到构建路径,然后选择所有五个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 );
Run Code Online (Sandbox Code Playgroud)

  • 帮助想要连接到Access数据库的用户的好建议(更多细节[此处](http://stackoverflow.com/q/21955256/2144390)).但是,这不是一般的ODBC解决方案. (2认同)