您的位置:首页 > 数据库

JDBC-注册数据库驱动

2016-02-22 11:31 316 查看
偶尔会突然短路,想着为什么Class.forName(${DriverName}); DriverManager里就有注册了这个数据库的驱动呢?

这是因为,我们在思考 注册数据库驱动 的时候,总是想着我们自己去注册,如果没有显式的去做,就不自在。 这还是因为没有一个OO的思想。

其实呢,注册数据库驱动这个动作,sun只提供了注册的动作,其余的是谁注册它并不关心,这样呢,它就是一个服务提供者,我提供注册的服务给你,你自己去注册就好了。

就像加油站,我给加油站以及加油的龙头在那,你没油了你自己去拿着龙头加油。我不需要知道你这是桑塔纳还是水泥车还是宝马。

sun提供给你这个接口,你们数据库提供商就自己拿去注册。

下面是代码:

sun提供的数据库驱动管理类:

public static synchronized void registerDriver(Driver driver)
throws SQLException
{
registerDriver(driver, null);
}


mysql提供的驱动类:(Class.forName()是让JVM去查找指定的类(初始化),并没有实例化,只不过是把类加载到了JVM中。但是由于静态代码和class是在方法区中的,在初始化的时候就会全部执行一次且以后不再执行,所以当初始化时,会加载以下代码中的static片段,即→注册数据库驱动方法)

public class Driver extends NonRegisteringDriver
implements java.sql.Driver
{

public Driver()
throws SQLException
{
}

static
{
try
{//mysql的驱动自己拿着sun的驱动管理类进行了注册。我们在使用的时候只要把这个类初始化就行了。
DriverManager.registerDriver(new Driver());
}
catch(SQLException E)
{
throw new RuntimeException("Can't register driver!");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: