关于JDBC驱动程序

时间:2012-03-05 22:56:59

标签: java java-ee jdbc

我读过一本书中使用JDBC API的驱动程序。不清楚解释。我想知道下面的代码使用什么类型的驱动程序。是类型4驱动程序(数据库供应商提供的java驱动程序)。有人提到在类型4驱动程序的客户端应用程序中不需要安装任何东西。但是我们仍然需要让类文件com.mysql.jdbc.Driver才能使代码生效。不确定这里的意思。

还有人提到类型2驱动器使用数据库供应商提供的驱动程序的二进制代码,它需要安装在客户端中。它与下面的例子有何不同。如果可以粘贴示例代码以访问类型2驱动程序,将会很有帮助。

Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost/coffeebreak";
conn = DriverManager.getConnection(url, "username", "password");
doTests();
conn.close();

1 个答案:

答案 0 :(得分:4)

当您在引用类型4 JDBC驱动程序时(特别是在旧文档中)看到“无需安装任何内容”这一短语时,它指的是除了驱动程序jar本身之外的任何内容都不需要在客户端计算机上安装。无论如何,您都需要驱动程序jar,但使用其他类型:

  • 类型1:需要在客户端系统上安装ODBC和ODBC驱动程序
  • 类型2:需要在客户端系统上安装本机数据库驱动程序
  • 类型3:需要在客户端系统和数据库之间安装协议代理服务器

例如,Oracle类型2驱动程序(除了jdbc jar本身之外)需要在运行java代码的机器上安装完整的oracle客户端。

几点说明:

  • 从java 6(IIRC)开始,使用现代的jdbc驱动程序,您不再需要Class.forName语句。较新的JDBC驱动程序现在自动注册。

  • 你不能仅仅通过查看使用它的代码来说明(这就是重点),但是mysql jdbc驱动程序是一个类型4的驱动程序。

  • 由于您无法通过使用驱动程序来区分,使用类型2驱动程序的示例代码与您在问题中提供的示例代码相同。

  • 供应商提供的所有类型的jdbc驱动程序(类型1除外,因为只有1个实例)功能驱动程序。类型指的是驱动程序如何连接到数据库,而不是谁提供它。

  • 现在,类型2驱动程序非常罕见,IMO,根本没有人真正使用类型1或3驱动程序。

  • 现在,几乎所有现代的,具有生产价值的jdbc驱动程序都是类型4.(我知道oracle提供了类型2和类型4驱动程序,但这是我能想到的唯一一个,并且两个驱动程序具有相同的功能。)使用类型4,除非您有来自数据库供应商的某些高度特定建议。

此外,您引用的语言听起来相当陈旧。 JDBC的基础知识在一段时间内没有显着改变,但即便如此,您可能还想查看一本较新的书。