从 Java 8 开始,JDBC-ODBC 桥将不再包含在 JDK 中。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown
有没有其他连接 JDBC-ODBC 桥的解决方案?
我们仍然可以在 java 8 中使用 JDBC-ODBC 桥,只需遵循这个简单的方法:
将 sun\jdbc 和 sun\security\action 文件夹复制出来,保留文件夹结构。即,您应该具有如下文件夹结构:
Sun --> Security --> Action
--> JDBC
打开一个 CMD 窗口。转到 Sun 文件夹的父文件夹。运行命令:jar -cvf jdbc.jar sun
lib
文件夹。如果这不起作用,请尝试该lib\ext
文件夹。好吧,在我看来,Oracle 员工的这篇博文说明了一切:
我建议您使用数据库供应商提供的 JDBC 驱动程序或商业 JDBC 驱动程序,而不是 JDBC-ODBC 桥。
您将 JDBC-ODBC 桥用于哪种应用程序?
有没有其他连接 JDBC-ODBC 桥的解决方案?
Sun 和 Oracle 的官方立场长期以来一直是——
[JVM-bundled] JDBC-ODBC 桥应该被认为是一种过渡解决方案 [...] Oracle 不支持 JDBC-ODBC 桥。
但是,我的雇主OpenLink Software从 JVM 1.0 开始就在 JDBC 和 ODBC 之间开发了企业级商业 Type 1 Bridges,并且这些桥接器与当前的 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)
这些都是开源的。如有必要,进行互联网搜索、下载、解压缩,并将所有四个 jar 以及用于 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 );
Robert Petermeier 给出了一个很好的观点 H2 驱动器通过 PostgreSQL 驱动程序支持 ODBC,您可以相应地安装驱动程序,来自 Stackoverflow 的链接在 Windows 上设置 PostgreSQL ODBC