从Java 8开始,JDBC-ODBC桥将不再包含在JDK中。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown
有没有其他连接JDBC-ODBC桥的解决方案?
从Java 8开始,JDBC-ODBC桥将不再包含在JDK中。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown
有没有其他连接JDBC-ODBC桥的解决方案?
将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
文件夹。
- 将JRE 7安装的JRE \ bin中的jdbcodbc.dll复制到JRE 8安装的JRE \ bin中。
- 重新启动JVM。
lib
文件夹不起作用,请尝试JRE8的lib\ext
文件夹。将其放入lib
文件夹中对我没有用,但是lib\ext
有用。我尝试将其添加到答案中,但被拒绝了。其他更有经验的人应该将其添加到答案中。 - Dale我认为,这篇由Oracle员工撰写的博客文章已经说明了一切:
我建议您使用由数据库供应商提供的JDBC驱动程序或商业JDBC驱动程序,而不是JDBC-ODBC桥接器。
您正在使用JDBC-ODBC桥接器的哪种应用程序?
有没有其他连接JDBC-ODBC桥的解决方案?
Sun和Oracle的官方立场长期以来一直是--
应该将[JVM捆绑的] JDBC-ODBC桥视为过渡性解决方案[...] Oracle不支持JDBC-ODBC桥。
然而,我的雇主OpenLink Software自JVM 1.0以来就生产了企业级商业类型1桥接器,可以在当前的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的一个JAR文件放在项目目录中(例如JDBC-to-MSAccess)。如果使用Eclipse,请从菜单“项目/属性/Java编译器/库/添加外部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 );
Robert Petermeier提出了一个很好的观点,H2驱动支持通过PostgreSQL驱动程序使用ODBC,您可以根据Stackoverflow链接在Windows上设置PostgreSQL ODBC安装驱动程序。