0 0

JDBC4.0的DriverManager的疑惑5

JDBC4.0中可以不使用Class.forName()这个方法。

在使用Class.forName()方法时,调试输出如下:

 

JdbcOdbcDriver class loaded
registerDriver: driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@ca0115]
DriverManager.initialize: jdbc.drivers = null
JDBC DriverManager initialized
registerDriver: driver[className=com.mysql.jdbc.Driver,com.mysql.jdbc.Driver@198a455]
DriverManager.getConnection("jdbc:mysql:///openjpa")
    trying driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@ca0115]
*Driver.connect (jdbc:mysql:///openjpa)
    trying driver[className=com.mysql.jdbc.Driver,com.mysql.jdbc.Driver@198a455]
getConnection returning driver[className=com.mysql.jdbc.Driver,com.mysql.jdbc.Driver@198a455]

 

在不使用Class.forName()方法时,调试输出入如下:

 

DriverManager.getConnection("jdbc:mysql:///openjpa")
JdbcOdbcDriver class loaded
registerDriver: driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@a4e743]
registerDriver: driver[className=com.mysql.jdbc.Driver,com.mysql.jdbc.Driver@198a455]
DriverManager.initialize: jdbc.drivers = null
JDBC DriverManager initialized
    trying driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@a4e743]
*Driver.connect (jdbc:mysql:///openjpa)
    trying driver[className=com.mysql.jdbc.Driver,com.mysql.jdbc.Driver@198a455]
getConnection returning driver[className=com.mysql.jdbc.Driver,com.mysql.jdbc.Driver@198a455]

 

查看源代码,发现2中方法都调用loadInitialDrivers()方法,但是2者的输出 registerDriver: driver XXXXX 的顺序为什么一样呢?

 

描述的不是很清楚。请各位帮忙 分析一下具体的加载过程 , 小弟不胜感激。

 

2009年12月26日 20:26

1个答案 按时间排序 按投票排序

0 0

这个很简单。Driver基本有一个static的方法,会主动往DriverManager中注册自己。

Driver {
  static  {
     DriverManager.registerDriver(Driver)
  }
}


所以,调用class.forName()就会触动这个注册,同时注册会触发DriverManager的initialized。也就是这段输出:
JdbcOdbcDriver class loaded  
registerDriver: driver[className=sun.jdbc.odbc.JdbcOdbcDriver,sun.jdbc.odbc.JdbcOdbcDriver@ca0115]  
DriverManager.initialize: jdbc.drivers = null  
JDBC DriverManager initialized  
registerDriver: driver[className=com.mysql.jdbc.Driver,com.mysql.jdbc.Driver@198a455]


然后,你getConnection的时候,输出:
DriverManager.getConnection("jdbc:mysql:///openjpa") 


如果你前面调用了class.forName()那么Driver注册过了,那么就可以直接得到Connection。如果Driver没注册过,肯定需要注册,并初始化DriverManager。

2009年12月27日 09:23

相关推荐

    sqljdbc4.0.zip

    《SQL JDBC 4.0驱动:为开发者带来的便利与详细解析》 在Java开发中,数据库连接是不可或缺的一部分,而Microsoft SQL Server作为广泛使用的数据库系统,其对应的JDBC驱动是连接Java应用程序与SQL Server的关键。...

    微软 JDBC 4.0 驱动

    微软JDBC 4.0驱动是微软公司为Java开发者提供的一款用于连接Microsoft SQL Server数据库的Java Database Connectivity(JDBC)驱动程序。这个驱动版本主要针对SQL Server 2008数据库设计,同时也兼容更高版本的SQL ...

    Driver jdbc4.0

    【标题】"Driver jdbc4.0"涉及到的是Java数据库连接(JDBC)的特定版本,即JDBC 4.0。JDBC是Java语言中用来规范客户端程序如何访问和处理不同种类数据库的标准接口,由Java SE平台提供。JDBC 4.0是随着Java 6的发布...

    数据库驱动sqljdbc4.0

    数据库驱动SQLJDBC4.0是Microsoft为Java应用程序提供的一种用于与SQL Server进行通信的 JDBC(Java Database Connectivity)驱动程序。这个驱动适用于JDK 1.6及更高版本,为开发者提供了在Java环境中访问和操作SQL ...

    sqljdbc4.0jar文件

    `sqljdbc4.0.jar` 文件是微软公司提供的一个Java数据库连接驱动,它允许Java应用程序通过JDBC(Java Database Connectivity)接口与SQL Server数据库进行通信。这个驱动是Microsoft SQL Server JDBC Driver的一个...

    JDBC4.0 PDF教程

    ### JDBC 4.0 规范详解 #### 一、概述 JDBC(Java Database Connectivity)是 Java 平台提供的一套标准接口,用于访问关系型数据库。自 1997 年发布以来,JDBC 已经成为了 Java 应用程序与数据库交互的标准方式。...

    jdbc4.0 sql server连接包

    **JDBC4.0与SQL Server连接包** Java Database Connectivity(JDBC)是Java平台上的一个标准API,它允许Java程序与各种类型的数据库进行交互。JDBC4.0是JDBC的一个版本,引入了增强的功能和性能改进,提高了与...

    sqljdbc4.0-4.2.zip

    8. 配置参数:SQLJDBC驱动支持多种配置参数,例如连接超时、查询超时、自动提交等,可以通过设置`Properties`对象并传递给`DriverManager.getConnection()`方法来配置。 9. 安全性:使用最新的SQLJDBC版本可以确保...

    sqljdbc 3.0及4.0

    `sqljdbc 3.0`和`4.0`是微软的Java Database Connectivity (JDBC)驱动程序,它们提供了标准的Java API,使得Java开发者可以利用Java语言访问和操作SQL Server数据库。JDBC是Oracle公司定义的一套用于Java程序与各种...

    sqljdbc java 数据驱动4.0

    SQLJDBC 4.0是Microsoft为Java开发者提供的一个数据库连接驱动,用于与SQL Server进行交互。这个数据驱动是基于JDBC(Java Database Connectivity)标准的,使得Java应用程序能够通过JDBC API与SQL Server数据库进行...

    sqljdbc_4.0

    4. 安装与配置:将sqljdbc_4.0目录中的jar文件(如sqljdbc4.jar或sqljdbc41.jar)添加到Java项目的类路径中,然后使用`Class.forName()`方法加载驱动,通过`DriverManager.getConnection()`建立数据库连接。...

    sqljdbc4-4.0.jar

    《SQL Server JDBC驱动4.0版本详解》 在Java编程中,与数据库的交互是必不可少的一部分,而SQL Server作为一款广泛应用的关系型数据库管理系统,其在Java环境下的连接和操作主要依赖于JDBC(Java Database ...

    Microsoft JDBC Driver 4.0 for SQL Server

    《Microsoft JDBC Driver 4.0 for SQL Server:深入解析与应用》 Microsoft JDBC Driver是微软公司为Java开发者提供的一种用于连接SQL Server数据库的驱动程序,它遵循Java Database Connectivity (JDBC) API标准,...

    sqljdbc_4.0.2206.100_chs

    "sqljdbc_4.0.2206.100_chs" 是一个针对中文用户的SQL Server JDBC驱动程序的版本号,它属于Microsoft SQL Server的Java数据库连接(JDBC)驱动程序。JDBC驱动是Java程序员用来与SQL Server进行交互的桥梁,允许Java...

    maven 下载 sqljdbc4-4.0.jar

    `sqljdbc4-4.0.jar`是Microsoft提供的一个适用于Java的SQL Server JDBC驱动程序,它允许Java应用程序通过JDBC接口与SQL Server进行通信。在本篇中,我们将深入探讨`sqljdbc4-4.0.jar`以及如何在Maven项目中下载和...

    JDBC Driver 4.0 for SQL Server

    在实际开发中,开发者需要下载并添加Microsoft JDBC Driver 4.0的jar文件到项目的类路径中,然后通过`Class.forName()`方法加载驱动,使用`DriverManager.getConnection()`创建数据库连接。此外,还需要了解如何编写...

    sqljdbc4-4.0.jar.rar

    《SQL Server 数据库连接驱动:sqljdbc4-4.0.jar 深度解析》 在信息化社会中,数据库管理系统的角色至关重要,SQL Server作为微软公司推出的强大关系型数据库管理系统,广泛应用于各种业务场景。而要与SQL Server...

    sqljdbc4-4.0.zip

    `sqljdbc4-4.0.jar`是微软为SQL Server提供的一个特定版本的JDBC驱动,用于在Java应用程序中连接到SQL Server数据库。 标题中的"sqljdbc4-4.0.zip"是一个压缩包,包含了`sqljdbc4-4.0.jar`文件,这个文件是Java开发...

Global site tag (gtag.js) - Google Analytics