首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Class.forName()做了什么——联接MySqL数据库为例

2012-12-25 
Class.forName()做了什么——连接MySqL数据库为例一般而言,我们在Java中连接MysqL数据库只需下面两行代码:?C

Class.forName()做了什么——连接MySqL数据库为例

一般而言,我们在Java中连接MysqL数据库只需下面两行代码:

?

Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+dbName,userName,password);

?

但Class.forName()到底干了什么事情呢?

使用Class.forName()会将调用的类初始化,并返回该类的Class对象。我们查看Driver类的source code就会发现,一切就是在初始化的时候搞了鬼。

?

com.mysql.jdbc.Driver中的部分代码:

public class Driver extends NonRegisteringDriver implements java.sql.Driver {// ~ Static fields/initializers// ---------------------------------------------//// Register ourselves with the DriverManager//static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException("Can't register driver!");}}……}
?

在初始化Driver类的时候,其中的静态代码也会执行,于是乎自动执行下面的语句:

java.sql.DriverManager.registerDriver(new Driver());

?

就这样,使用forName()初始化Driver后,MySql驱动就自动向DriverManagemer类注册了,使得我们能通过DriverManager获得对MysqL的连接。

热点排行