此处只讨论 加载驱动的问题,其他无关的问题我们暂时忽略
疑问
一般使用jdbc 连接数据库,手写代码如下
//jdk6之后,不需示执行Class.forName
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","xxx","xxxx");
我第一次写此代码时,就有很多疑问,但是后来也没研究,今天我把当时的疑问列出
1 "oracle.jdbc.driver.OracleDriver" 和"jdbc:oracle:thin" 有什么关系,为什么要写两遍
2 Class.forName 注册驱动后,没有返回值,是怎么回事
3 Class.forName 为什么 此行在jdk6版本中 又不需要了呢
4 DriverManager.getConnection怎么使用的驱动的呢
分析源码
要回答上边的问题,我们先来看看这些代码的源码
1 要使用jdbc连接 oracle,必须先加载驱动,Class.forName就是加载驱动
Class.forName会初始化 oracle.jdbc.driver.OracleDriver这个类 (关于类的加载过程可自行搜索),初始化时自动执行类的静态代码块
<