Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java 8中JDBC ODBC桥的删除_Java_Jdbc Odbc_Java 8 - Fatal编程技术网

java 8中JDBC ODBC桥的删除

java 8中JDBC ODBC桥的删除,java,jdbc-odbc,java-8,Java,Jdbc Odbc,Java 8,从Java8开始,JDK将不再包括JDBC-ODBC桥 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown 有没有其他连接JDBC-ODBC网桥的解决方案?好吧,在我看来,这说明了一切: 我建议您使用数据库供应商提供的JDBC驱动程序或商业JDBC驱动程序,而不是JDBC-ODBC桥 您将JDBC-ODBC桥用于哪种应用程序 如果是生产代码,您应该尽快用真正的驱动程序替换网桥,用

从Java8开始,JDK将不再包括JDBC-ODBC桥

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // classNotFoundException is thrown
有没有其他连接JDBC-ODBC网桥的解决方案?

好吧,在我看来,这说明了一切:

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

您将JDBC-ODBC桥用于哪种应用程序

  • 如果是生产代码,您应该尽快用真正的驱动程序替换网桥,用真正的数据库替换遗留数据库
  • 如果测试代码与Access DB、Excel电子表格或任何可以通过ODBC访问的内容交互,请尝试用纯Java数据库(如H2)替换它
  • 如果出于开发和/或分析目的,您使用它对遗留access数据库进行临时访问,并且确实不能或不想更新任何内容,那么您可以使用JDK 7相当长的一段时间,直到它的生命周期结束,并且可能远不止于此

Robert Petermier提出了一个很好的观点,H2驱动器通过PostgreSQL驱动程序支持ODBC,您可以相应地安装驱动程序Stackoverflow的链接

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

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

它有两个依赖项,其中一个又有两个依赖项

jackcess-2.0.0.jar或更高版本

commons-lang-2.4.jar

commons-logging-1.0.4.jar
hsqldb.jar(2.2.5)

这些都是开源的。进行internet搜索、下载、解压缩(如果需要),并将所有四个JAR加上一个用于UCanAccess的JAR放在项目的目录中(例如JDBC到MSAccess)。如果使用Ecplise,通过从菜单“Project/Properties/Java编译器/Libraries/addexternaljars”中选择并选择所有五个jar文件来添加到构建路径

连接逻辑非常简单:


String strConnectionString=”“;
连接管理员=null;
//寄存器驱动程序
类forName(“net.ucanaccess.jdbc.UcanaccessDriver”);
//System.getProperty(“user.dir”)=>从中启动应用程序的当前工作目录
strConnectionString=“jdbc:ucanaccess://”+System.getProperty(“user.dir”)+“\\您的数据库名称。”;
//打开与数据库的连接
conAdministrator=DriverManager.getConnection(strConnectionString);
有没有其他连接JDBC-ODBC网桥的解决方案

太阳公司和甲骨文公司一直都是这样--

[JVM绑定的]JDBC-ODBC桥应被视为一种过渡解决方案[…]Oracle不支持JDBC-ODBC桥

然而,我的雇主从JVM1.0开始就在JDBC和ODBC之间建立了企业级的商业1型网桥,这些网桥与当前的JVM1.8完全兼容。你可以在这里学到更多--

  • --用于ODBC数据源的JDBC驱动程序
  • --用于JDBC数据源的ODBC驱动程序

我们也可以在java 8中使用JDBC-ODBC网桥,只需遵循以下简单方法:

  • 下载JDK 7或JRE 7
  • 转到JRE\lib文件夹并找到rt.jar
  • 解压它(如果您安装了WinRAR或7zip),或者您可以将其重命名为rt.zip并解压
  • 复制sun\jdbc和sun\security\action文件夹,保留文件夹结构。i、 例如,您应该具有如下文件夹结构:

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

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


  • 有人能帮我吗?你可以随时从JDK 7中提取驱动程序。@RickyMutschlechner为什么选择EasySoft?它们似乎定价过高…@BAR只是我在谷歌lolAnd上发现的一个随机建议,我想感谢Robert Petermier的精彩回答,因为我只花了1小时就迁移到了H2。不幸的是,由于声誉不好,我无法提高他的回答率,但仍然可以说谢谢。作为对这个回答的补充,我想指出,您可以使用Excel电子表格和Access数据库。不过,这两项工作都比ODBC要多一些。一位Oracle员工建议更改您的企业数据库,因为缺少持续的驱动程序支持。经典。@BAR:哪一个“企业”数据库没有合适的JDBC驱动程序?@a_horse_和_no_名称这正是我的观点。任何真正的企业数据库都会使用JDBC,JDBC并不总是用JDBC遗留驱动程序替换ODBC驱动程序的最佳解决方案,例如:在使用Sybase IQ时,ODBC驱动程序的运行速度比用于OLAP的JDBC驱动程序快500%。仅凭我的经验。这是帮助希望连接到Access数据库的用户的好建议(更多详细信息)。不过,这不是一个通用的ODBC解决方案。请投票选出好的答案。你能给我指一下驾驶执照吗?@YazadKhambata-我不知道你在找什么。可能地你还可以学到更多。这就是我一直在寻找的。谢谢。投票支持这个解决方案,因为它对我来说还可以。但是注意,您必须复制到\lib\ext文件夹,注意不要将32位版本复制到64位版本,反之亦然。嗨,frank,@runholen,你们能帮我解决同样的问题吗?这是我的问题嗨,user2423959。尝试从我的谷歌硬盘下载这些文件,确保它们都在类路径上。(附带文件适用于64位odbc btw)对于步骤1,另一种方法是仅解压缩所需内容,而不是下载并运行安装。windows exe可以用7zip打开,使用解压200可以拉出rt.jar。您也可以拉出dll。对于步骤7,如果JRE8
    lib
    文件夹不工作,请尝试JRE8
    lib\ext
    文件夹。普蒂
    Sun --> Security --> Action
        --> JDBC