java中class.forname连接mysql数据库_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的连接。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-05-07 03:20

浏览 1514

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值