为什么使用JDBC时要调用Class.forName(数据库驱动全类名)并使用DriverManager
java的JDBC给的是一个规范,给出connection、driver、resultset等接口,要想使用JDBC,就要实现这些接口,而这些接口由mysql等厂商发布的数据库驱动类实现,通过Class.forName(数据库驱动全类名),就把这些接口实现了
java的JDBC提供了规范,然后提供了一个“插槽”——DriverManager
DriverManager类存在方法registerDriver,通过addIfAbsent获取“Class.forName(数据库驱动全类名)”对应的驱动,因为实际场景中可以添加多个数据库——又有Oracle又有MySQL,所以项目中可以写多个Class.forName(数据库驱动全类名)

有这么多driver,如何确定连接的是哪个数据库,这就要靠url,url标志了哪个driver,就连接哪个driver

DriverManager.getConnection方法拿到数据库url,然后执行一个for循环进行判断,最后获得一个连接对象


最后要说明的是,java提供的都是接口,上图获取连接对象的方法aDriver.driver.connect(url,info)其实是由mysql实现,如果驱动报错,才会用到java提供的报错的类


浙公网安备 33010602011771号