【问题标题】:How to Make JDBC Driver Work in Java 5 & 6?如何使 JDBC 驱动程序在 Java 5 和 6 中工作?
【发布时间】:2009-08-06 11:13:43
【问题描述】:

Java 6 附带 JDBC 4,它与以前版本的 Java 附带的 JDBC 不向后兼容。

我们有一个 JDBC 驱动程序,它必须同时支持 Java 5 和 Java 6。如果我在驱动程序中实现新接口,它在 Java 5 中不起作用,因为接口也使用新类。所以我们有两个版本的驱动程序。有没有办法为 Java 5 和 6 提供一个 jar?

【问题讨论】:

  • 明确一点,您是在实现一个 JDBC 驱动程序,而不是使用一个?
  • 您能否在问题中提供更多信息。我们使用的是 jTDS,它是一个 JDBC 3.0 驱动程序,它适用于 Java 5 和 6。
  • 我认为决定应该是支持 JDBC 3.0 还是 4.0,不一定是 Java 5 或 6。
  • 是的。我正在为一个特殊的数据库编写一个驱动程序。我并不真正关心 JDBC 4.0。问题是我不知道如何制作同样适用于 Java 6.0 的 JDBC 3.0 驱动程序。我将看看jTDS。谢谢!

标签: java jdbc


【解决方案1】:

如果您实现了 JDBC 3.0 驱动程序,并且您的客户端在 Java 6 中运行它,那么如果它们调用任何新的 JDBC 4.0 方法,它们就会出错。这种情况很少见,因为这些新方法并不经常使用,但如果你想万无一失,下面的解决方案(这是一个 hack)应该可以解决问题:

  1. 使用 java 5 编译(如果使用 java 6 编译并在 java 5 中运行,则会出现版本不匹配错误)
  2. 实现普通的 JDBC 3.0 驱动程序,但也包括新的 JDBC 4.0 方法的实现(注意:这会导致编译错误,因为 java 5 没有定义像 java.sql.NClob 这样的类型)
  3. 在单独的项目中创建新的 JDBC 4.0 接口(如 java.sql.NClob)的精确副本(因此现在有 2 个项目:原始项目和这个项目)
  4. 一起编译两个项目,并为每个项目创建一个单独的 jar:
    • 您的 JDBC 驱动程序实现(保留此 jar)
    • 新的 JDBC 4.0 接口(丢弃这个 jar)

我们可以丢弃 JDBC 4.0 接口 jar,因为:

  • 在 Java 6 中,定义了那些新的 JDBC 4.0 接口
  • 在 Java 5 中,JDBC 3.0 接口未定义新方法(如 Connection.createNClob()),因此您的用户不会调用它们

唯一的潜在问题可能是 java 5 类加载器。如果找不到新的 JDBC 4.0 接口(如 java.sql.NClob),它可能会失败。我认为这不会在 Sun JVM 中发生,除非你调用一个返回这些新接口之一的方法,所以你应该很好。如果我错了,这是一个问题,只需在 Java 5 中运行时将丢弃的 jar(定义新 JDBC 4.0 接口的那个)放在类路径中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 2012-12-27
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    相关资源
    最近更新 更多