日期:2014-05-16 浏览次数:20464 次
一般而言,我们在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的连接。