在java中删除JDBC ODBC桥8

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

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

有没有其他解决scheme连接JDBC-ODBC桥?

那么,在我看来, 这位甲骨文员工的这个博客写道 :

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

你使用JDBC-ODBC Bridge的是什么样的应用程序?

  • 如果它是生产代码,你应该恕我直言replace一个真正的驱动程序和遗留数据库的桥梁与真正的一个尽快
  • 如果是与Access数据库,Excel电子表格或任何可以通过ODBC访问的testing代码交互,请尝试用纯Java数据库(如H2
  • 如果您将其用于针对开发和/或分析目的的传统Access数据库的临时访问,并且实际上不能或不想更新任何内容,则可以坚持使用JDK 7很长一段时间直到其生命周期结束,甚至可能远远超过这一点

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

  1. 下载JDK 7或JRE 7。
  2. 转到JRE \ lib文件夹并findrt.jar
  3. 解压缩(如果您安装了WinRAR),或者您可以将其重命名为rt.zip并将其解压缩。
  4. 复制sun \ jdbc和sun \ security \ action文件夹,保留文件夹结构。 即你应该有如下的文件夹结构:

     Sun --> Security --> Action --> JDBC 
  5. 打开一个CMD窗口。 转到Sun文件夹的父文件夹。 运行命令:jar -cvf jdbc.jar sun

  6. 上面的命令将创build一个名为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桥接

有没有其他解决scheme连接JDBC-ODBC桥?

Sun和甲骨文的官方立场一直如此 –

[JVM捆绑的] JDBC-ODBC Bridge应该被认为是一个过渡性解决scheme。Oracle不支持JDBC-ODBC Bridge。

然而,自从JVM 1.0以来,我的雇主OpenLink Software已经在JDBC和ODBC之间生成了企业级的商用Type 1网桥,并且这些网桥与目前的JVM 1.8完全兼容。 你可以在这里了解更多 –

  • 单层JDBC-ODBC桥驱动程序 – 用于ODBC数据源的JDBC驱动程序
  • 单层ODBC-JDBC桥驱动程序 – 用于JDBC数据源的ODBC驱动程序

我find了一个合理的解决scheme,允许使用现有的代码进行更改,仅打开数据库连接逻辑。

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)

这些都是开源的。 做一个互联网search,下载,解压缩,如果需要的话,把所有四个jar子加UCanAccess的一个在你的项目目录(例如JDBC到MSAccess)。 如果使用Ecplise,通过从菜单“Project / Properties / Java编译器/库/添加外部JAR”中select添加到您的构buildpath,并select所有五个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 ); 

Robert Petermeier给出了一个好的观点H2驱动器通过PostgreSQL驱动程序支持ODBC,并且可以根据Stackoverflow的链接安装驱动程序在Windows上设置PostgreSQL ODBC

我知道这个问题已经回答了很久,但我想突出DataDirect的续集。 在这个博客https://www.progress.com/blogs/jdbc-odbc-bridge-replacement-yields-performance-boost中; ,作者谈论了他们的网桥如何能够提升310%的性能。 桥的试用版可以在这里下载: https : //www.progress.com/jdbc/sequelink